揚げ足取りですけど

http://d.hatena.ne.jp/lethevert/20060108/p6

末尾再帰を最適化する言語でも、forがないことはないんじゃないでしょうか。OCamlはforありますし。あるいはRubyも末尾再帰の最適化してるそうですし*1ループの構文という意味なら、SchemeだってLispだってループ構文は一応あるわけですし。

forをなくすことができる説明は簡単なのですが、そこでforがない理由を説明するのは結局「そういう言語だから」と言うしかないのかなあ、と。

余談ですが、私がOCamlでプログラミングするときは、forは使ったことがありませんが、whileは「whileを使えばきれいに書けるな」と感じるときには躊躇せずに使います。