遅延評価
Haskellでは、必要なときに、必要なだけし評価しないという、なまけもの遅延評価があります。
きのうn9dさんがコメントしてくださったように、遅延評価のおかげで、無限リストも作れちゃいます
[1..] Prelude> take 5 [1..] [1,2,3,4,5]
takeは、ひとつめの引数ぶん、ふたつ目の引数のリストから要素をとりだします。遅延評価が存在しない言語では、ふたつ目の引数である無限リストをつくりだしてからtakeを実行しますが、Haskellでは、遅延評価のおかげで、takeに必要なぶんだけの無限リストがつくられます。
必要なときに、必要なときだけ。