http://d.hatena.ne.jp/palmo/20060606/grep
ここの最後の疑問を読んで、確かにそうだなぁと思ったので、こちらで質問させてください。

grepやmapの第一引数にEXPRを指定すると、何度も評価されますよね?
でも、普通に考えたらgrepやmapが実行される前に評価されてしまうのではないでしょうか。
この遅延評価はgrepやmapだけ特別なんでしょうか。
BLOCKを渡すと遅延評価される、というのは納得できますが…。

同じような事がforやwhileなどにも言えますけど、あちらは構文ですよね。