Я ожидал, что мой стек взорвется со следующим кодом... но этого не произошло:
*Main> let blowwss x = if x == 0 then 0 else (1 + blowwss (x-1))
*Main> blowwss 1000000
1000000
Функция не кажется хвостовой рекурсией, поэтому мне интересно, что я могу упустить. Стек GHCi больше, чем я думал (кстати, как я могу увидеть его размер стека?). Он использует какой-то батут, чтобы преодолеть это? Достаточно ли он умен, чтобы преобразовать функцию в ее итеративный аналог?
Спасибо
blowwss 99999999999999999999999999999999999999- person Ingo   schedule 01.12.2013