7.6 遅延評価

(式: OCaml 1.06 〜、パターン: OCaml 3.11 〜)

lazy exprexpr の計算をカプセル化した Lazy.t 型の値 v を返します。 expr はこの時点では評価されません。代わりに、 Lazy.forcev に適用したところで評価が行なわれ、 expr の実際の値が返ります。それ以降 vLazy.force を適用しても expr が再度評価されることはありません。 Lazy.force の適用はパターンマッチにより暗黙に行なわれることもあります。

パターン lazy patternLazy.t 型の値 v で、 patternvLazy.force を適用したものにマッチするものにマッチします。 lazy を下位パターンとして持つパターンがマッチすると、 lazy パターンとマッチした部分の値が Lazy.force されます。これは、 lazy value-namelazy _ のように、値に対するテストを行なわない場合でも同じです。下位パターンとして lazy パターンを含む pattern-matching に値をマッチさせた場合、最終的にマッチしたパターンに lazy パターンが含まれない場合でも、値の一部が暗黙に Lazy.force されることがあります。

より詳しくは、標準ライブラリの Lazy モジュールを参照してください。