interruptible-0.1.0.0: Interruptible monad transformers - transformers that can be run and resumed later, conserving their context.

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