I believe you means lazy evaluation - It is an evaluation strategy which delays the evaluation of an expression until its value is needed (non-strict evaluation) and which also avoids repeated evaluations (sharing). The sharing can reduce the running time of certain functions by an exponential factor over other non-strict evaluation strategies, such as call-by-name.
The benefits of lazy evaluation:
1. Performance increases by avoiding needless calculations, and error conditions in evaluating compound expressions
2. The ability to construct potentially infinite data structures
3. The ability to define control flow (structures) as abstractions instead of primitives
In F# lazy evaluation is done by the lazy keyword -
let identifier = lazy ( expression )
// expression is code that is evaluated only when a result is required, and identifier is a value that stores the result
To force the computation to be performed, you call the method Force. Force causes the execution to be performed only one time. Subsequent calls to Force return the same result, but do not execute any code.
let x = 10
let result = lazy (x + 10)
printfn "%d" (result.Force())