遅延計算 (F#)

遅延計算は、すぐには評価されず、結果が必要なときに評価される計算です。これは、コードのパフォーマンスの向上に役立ちます。

let identifier = lazy ( expression )

解説

前の構文では、expression は結果が必要なときにのみ評価されるコードであり、identifier は結果を格納する値です。値は Lazy<'T> 型で、'T に使用される実際の型は、式の結果から判断されます。

遅延計算によって、結果が必要な場合にのみ計算を実行するように制限することで、パフォーマンスを向上できます。

計算の実行を強制するには、Force メソッドを呼び出します。Force を使用すると、計算が 1 回だけ実行されます。その後に呼び出した Force では、同じ結果が返されますが、コードは実行されません。

遅延計算の使用と、Force の使用を次のコード例に示します。このコードでは、result の型は Lazy<int> であり、Force メソッドでは int が返されます。

let x = 10
let result = lazy (x + 10)
printfn "%d" (result.Force())

Lazy 型ではない遅延評価もシーケンスに使用されます。詳細については、「シーケンス (F#)」を参照してください。

参照

関連項目

LazyExtensions モジュール

その他の技術情報

F# 言語リファレンス