Contains a class and instance for MonadIO implementations that can be run directly in MonadIO and | then reconstructed to the original type, without changing the overall semantics.
Represents a MonadIO where any change further up the monad stack can be | represented lower down in the stack.
Sets up state (e.g. an IORef) to be used to simulate the monad from the | IO monad.
Maps the monad to only use IO level constructs and the state set up | using unwrapState.
Reverses a previous unwrapMonadIO operation.