У Haskell есть хвостовая рекурсивная оптимизация?

Я обнаружилвремя" Команда в Unix сегодня и думал, что яd использовать его для проверки разницы во времени выполнения между хвостово-рекурсивными и обычными рекурсивными функциями в Haskell.

Я написал следующие функции:

--tail recursive
fac :: (Integral a) => a -> a
fac x = fac' x 1 where
    fac' 1 y = y
    fac' x y = fac' (x-1) (x*y) 

--normal recursive
facSlow :: (Integral a) => a -> a
facSlow 1 = 1
facSlow x = x * facSlow (x-1)

Они действительны, имея в виду, что они предназначены исключительно для использования с этим проектом, поэтому я нене нужно проверять наличие нулей или отрицательных чисел.

Однако, после написания основного метода для каждого, компиляции и запуска их с помощью "время" команда, оба имели одинаковое время выполнения снормальный рекурсивная функция, вытесняющая хвостовую рекурсивную. Это противоречит тому, что яd слышал о хвостовой рекурсивной оптимизации в lisp. Какие'причина этого?

Ответы на вопрос(4)

Ваш ответ на вопрос