Исходя из императивных языков, таких как Python, Javascript и Java, я очень часто читал о служебных накладных расходах и почему избежать карты с точки зрения производительности. Очевидно, что это не функциональные языки, а иностранные концепции обычно менее оптимизированы и менее идиоматичны. Я понимаю, что вызывающие функции выталкивают значения из регистров обратно в стек, который стоит дорого.
Итак, с недавним шумом о концепции и языках FP мне действительно интересно, как Haskell решает эту проблему? Это просто, что компиляторы очень много делают? В дополнение к этому, как FP-Языки (Clojure/Scala) на JVM решить эту проблему? Даже отсутствие хорошей оптимизации Tail-Call довольно подробно говорит о возможностях JVM в плане оптимизации кода FP.
Спасибо!