interruptible-0.1.0.0: Interruptible monad transformers - transformers that can be run and resumed later, conserving their context.
Given an inner monad and a transformer:
> (Monad m, MonadTrans t)
If t is an interruptible transformer, it becomes possible to intercalate executions
on the t context with executions over the inner monad m by breaking the execution
on t and resuming it later.
Interruptible monads implement the runI function so that, given f :: a -> t m b and
g :: b -> t m c, resume (f >>= g) is equivalent to x -> resume f x >>= resume g.
That makes it possible to intercalate the execution of different monads, and even to return a monadic context for another function to resume it.
Modules
- Control