A type of monad allowing for the delay of an execution of a computation.

Lazy evaluation allows for:

  • the delay of an execution of a computation
  • memoisation to prevent repeated computation.

Lambda as Delayed Data

The lambda does not invoke the function, thus storing the lambda in a wrapper class, with the ability to store its value, allows us to delay the execution of the lambda and store the computed result.