#### 4.2.5 Delayed evaluation

— library syntax: delay <expression>

> The ‘`delay`’ construct is used together with the procedure `force` to implement lazy evaluation or call by need. `(delay` <expression>`)` returns an object called a promise which at some point in the future may be asked (by the ‘`force`’ procedure) to evaluate <expression>, and deliver the resulting value. The effect of <expression> returning multiple values is unspecified.

> See the description of ‘`force`’ (section see Control features) for a more complete description of ‘`delay`’.