Кто-нибудь написал официальную статью, описывающую метод (автоматического) преобразования функций в хвостовую рекурсию? лечение, включая ограничения (типы функций, которые могут быть преобразованы), процедуры преобразования и, если возможно, доказательства правильности?Примеры на Haskell будут бонусом.