遅延評価

Haskellでは、必要なときに、必要なだけし評価しないという、なまけもの遅延評価があります。

きのうn9dさんがコメントしてくださったように、遅延評価のおかげで、無限リストも作れちゃいます

[1..]

Prelude> take 5 [1..]
[1,2,3,4,5]

takeは、ひとつめの引数ぶん、ふたつ目の引数のリストから要素をとりだします。遅延評価が存在しない言語では、ふたつ目の引数である無限リストをつくりだしてからtakeを実行しますが、Haskellでは、遅延評価のおかげで、takeに必要なぶんだけの無限リストがつくられます。

必要なときに、必要なときだけ。