MonadIO

Monads in which IO computations may be embedded. Any monad built by applying a sequence of monad transformers to the IO monad will be an instance of this class. Instances should satisfy the following laws, which state that liftIO is a transformer of monads:
MonadIO lifted forms of Sound.Osc.Time.Thread functions
Monads in which IO computations may be embedded. Any monad built by applying a sequence of monad transformers to the IO monad will be an instance of this class. Instances should satisfy the following laws, which state that liftIO is a transformer of monads:
Not on Stackage, so not searched. Overloading of concurrency variables
Not on Stackage, so not searched. Reversibly allow monad transformer stacks to run in IO
The MonadIO class is conceptually an interpretation of IO to some other monad. This function reifies that intuition, by transforming an IO effect into some other MonadIO. This function is especially useful when using the MonadIO instance for Sem instance. Make sure to type-apply the desired MonadIO instance when using embedToMonadIO.

Example

foo :: PandocIO ()
foo = runM . embedToMonadIO @PandocIO $ do
liftIO $ putStrLn "hello from polysemy"
Catch an IO Exception, and throw it after one time step.
Like delayMonadIOError, but throw the error without transforming it.
Build a DelayMonadIOException. The time will be measured using the system time.