Schemer's way

http://practical-scheme.net/docs/schemersway-j.html
#Haskellじゃないけれど。
以前に「末尾再帰にがっかり」という日記を書きましたが、上の記事に明快な答えが書いてありました。
末尾再帰最適化でループ相当のパフォーマンスを実現できるようにしておく。そのコードが見にくいかどうかは関係ない。実現できるなら、後はマクロで見やすい糖衣構文を用意すれば良い、ということなんですね。
少し自分の誤解が解けた気がします。でも、マクロがないHaskellはどうする?