Adapters between MonadIO and MonadBase IO.
This package provides utilities for converting between computations parameterized via two different typeclasses MonadIO and MonadBase, both of which can be used to abstract over monad transformer stacks with IO at the base. Unfortunately, both classes are frequently used in the Haskell ecosystem, since they have minor differences.
Due to these typeclasses being unrelated, it’s not entirely uncommon to end up with type signatures like (MonadIO m, MonadBaseControl IO m) => ..., which are a little silly, since MonadBaseControl IO really includes all the power of MonadIO.
To help alleviate this problem, this package provides a set of utilities for converting between the two constraints in situations where possible.
monad-io-adapter 
This Haskell package provides utilities for converting between computations parameterized via two different typeclasses, both of which can be used to abstract over monad transformer stacks with IO at the base. Unfortunately, both classes are frequently used in the Haskell ecosystem, since they have minor differences:
MonadIOcomes from thebasepackage (as ofbaseversion 4.9.0.0), and it provides aliftIOoperation. It is an extremely simple typeclass, focusing exclusively on liftingIOactions through transformer stacks withIOat the base.MonadBasecomes from thetransformers-basepackage, and it is a generalized version ofMonadIO. It provides a more generalliftBasefunction, which allows lifting to an arbitrary base monad.Generally, this additional power isn’t especially useful, but
MonadBaseappears most often throughMonadBaseControl, a subclass from themonad-controlpackage that enables lifting operations that accept an action in negative position. This class has noIO-specialized equivalent (not directly, at least), so it often appears in lifted “control” operations.
Due to these typeclasses being unrelated, it’s not entirely uncommon to end up with type signatures like (MonadIO m, MonadBaseControl IO m) => ..., which are a little silly, since MonadBaseControl IO really includes all the power of MonadIO.
For more information, see the documentation on Hackage.