Lazily perform a computation based on an Eval[A], using the
function f
to produce an Eval[B] given an A.
Lazily perform a computation based on an Eval[A], using the
function f
to produce an Eval[B] given an A.
This call is stack-safe -- many .flatMap calls may be chained without consumed additional stack during evaluation. It is also written to avoid left-association problems, so that repeated calls to .flatMap will be efficiently applied.
Computation performed in f is always lazy, even when called on an eager (Now) instance.
Transform an Eval[A] into an Eval[B] given the transformation
function f
.
Transform an Eval[A] into an Eval[B] given the transformation
function f
.
This call is stack-safe -- many .map calls may be chained without consumed additional stack during evaluation.
Computation performed in f is always lazy, even when called on an eager (Now) instance.
Ensure that the result of the computation (if any) will be memoized.
Evaluate the computation and return an A value.
Construct a lazy Eval[A] instance.
This type can be used for "lazy" values. In some sense it is equivalent to using a Function0 value.
This type will evaluate the computation every time the value is required. It should be avoided except when laziness is required and caching must be avoided. Generally, prefer Later.