A monad that can describe asynchronous or synchronous computations that produce exactly one result.
A monad that can suspend side effects into the
F context and
that supports lazy and potentially asynchronous evaluation.
A pure abstraction representing the intention to perform a side effect, where the result of that side effect may be obtained synchronously (via return) or asynchronously (via callback).
A monad that can suspend the execution of side effects