7.6 遅延評価 (Lazy evaluation)

lazy expr という式は、expr の評価をカプセル化した Lazy.t 型の値 v を返します。引数の expr はプログラムのこの時点では評価されていません。Lazy.force に v を適用することで初めて評価され、expr の実際の値が得られます。次に Lazy.force に v を適用しても評価は行われません。Lazy.forceの適用は、パターンマッチ中で暗黙的に行われることもあります。

lazy patternというパターンは、vをLazy.forceした結果がpatternとマッチする、Lazy.t型の値vとマッチします。lazyなサブパターンを含むパターンのマッチが成功した場合、マッチに対応した値がforceされます。これは、パターンがlazy value-nameや lazy _のようにテストを含んでいない場合にもあてはまります。いくつかのパターンがlazy サブパターンを含むようなパターンマッチと値をマッチさせた場合、値の一部が暗黙的に評価されます。これは、最終的にlazy サブパターンを含まないパターンが選択された場合でも同じことです。

詳細については、標準ライブラリの Lazy モジュールを見てください (Module Lazy) 。