余談ですよ2

http://www.jmuk.org/d/?path=2006/01/08#d08t02
[id:soutaro:20060108]
sequenceがあっても、mapがなければループを自前で書く必要があるわけで、じゃあ、ループをfor文なしにどう書くの?といったら、再帰構文で書けるから要らないよ、ってことでしょ、という話だと考えていたのだけれど・・・
そもそも、末尾再帰の最適化をしない言語の場合は、再帰構文でループを書くことができない。だから、そういう言語(CやJavaPascalや・・・)では、while文やfor文は、言語にとって不可欠の存在だということ。それに対し、末尾再帰の最適化をする言語(LispやMLやHaskellや・・・)では、while文やfor文は、単なる構文糖衣に過ぎない。

      • -

でも、なぜ(while文ではなくて)「for文」がないのか?ということなら、sequenceがあるからとかmapがあるからとかという理由であたっていると思う。for文というのは、シーケンスや配列操作を楽にするための、while文に対する構文糖衣だとも言えるからだ。