из Как работает язык без стека?
Haskell (as commonly implemented) does not have a call stack;
evaluation is based on graph reduction.
Правда? Это интересно, потому что, хотя я никогда не испытывал этого на себе, я читал, что если вы не используете строгие версии функций сворачивания, а затем принудительно оцениваете бесконечное сворачивание, вы получаете переполнение стека. Конечно, это указывает на наличие стека. Кто-нибудь может уточнить?