arrow-fx / arrow.fx.typeclasses / MonadIO


interface MonadIO<M> : Monad<M>

Lift concrete IO into a polymorphic monad M. This is used to call IO from mtl style programs which don’t have a concrete type. This is in theory enough to define the entire effect hierarchy up to Concurrent however those instances might have different semantics for different types which is why it is not done here. If one wants to use Concurrent methods by only delegating to IO simply perform the task in IO and lift it. If that is not enough use the fx-mtl package for better instances of the effect hierarchy.


liftIO abstract fun <A> IO<Nothing, A>.liftIO(): Kind<M, A>


IOMonadIO interface IOMonadIO : MonadIO<IOPartialOf<Nothing>>, IOMonad<Nothing>
ResourceMonadIO interface ResourceMonadIO<F, E> : MonadIO<ResourcePartialOf<F, E>>, ResourceMonad<F, E>

Type Class Hierarchy

Do you like Arrow?

Arrow Org