遅延評価

関数型言語の比較

OCaml

lazy を付けると、Lazy.forceするまで評価が遅延されます。

# let t = lazy (print_int 10);;
val t : unit lazy_t = <lazy>
# Lazy.force t;;
10- : unit = ()

Stream モジュールを使えば、遅延ストリームを手軽に書くことが出来きます。

SML

言語仕様としては存在しません。 SML/NJ は独自拡張として SUSP モジュールがあり、SUSP.lazyとSUSP.forceで遅延評価を行うことができます。

Haskell

全ての評価に遅延評価が用いられます。

新規 編集 添付