Represents a callback that should be called asynchronously with the result of a computation.
Coeval
represents lazy computations that can execute synchronously.
Task
represents a specification for a possibly non-strict or
asynchronous computation, which when executed will produce
an A
as a result, along with possible side-effects.