まあhaskellの場合はそもそも再帰呼び出ししなきゃloopできないんだから
そりゃstackに細工は必要だろうが。。そりゃ逆に言語の欠陥のためだ。