monad-io-adapter alternatives and similar packages
Based on the "monad" category.
Alternatively, view monad-io-adapter alternatives based on common mentions on social networks and blogs.
-
monad-validate
(NOTE: REPOSITORY MOVED TO NEW OWNER: https://github.com/lexi-lambda/monad-validate) A Haskell monad transformer library for data validation -
monad-control
Lift control operations, like exception catching, through monad transformers -
monad-time
Type class for monads which carry the notion of the current time. -
monad-unlift
Typeclasses for representing monad (transformer) morphisms -
monad-unlift-ref
Typeclasses for representing monad (transformer) morphisms -
monad-logger-prefix
Easily add a prefix to your MonadLogger output. -
monad-batcher
An applicative monad that batches commands for later more efficient execution -
monad-supply
Support for computations which consume values from a (possibly infinite) supply. -
monad-task
Task monad transformer that turns event processing into co-routines programming. -
monad-extras
Extra utility functions for working with monads -
monad-levels
Level-based interpretation of monad transformers -
monad-resumption
Resumption and Reactive-Resumption Monads for the Haskell programming language. -
monad-loops-stm
STM-specific control operators (split out of monad-loops as of version 0.4) -
monad-introspect
A reader monad that gives the environment access to the entire transformer stack -
monad-open
Open-ended computation for when you need it (open recursion) -
monad-control-identity
Stronger classes than monad-control -
monad-peel
Lift control operations like exception catching through monad transformers -
monad-interleave
Monads with an unsaveInterleaveIO-like operation -
monad-control-aligned
Lift control operations, like exception catching, through monad transformers -
monad-finally
Guard monadic computations with cleanup actions
Updating dependencies is time-consuming.
Do you think we are missing an alternative of monad-io-adapter or a related project?
README
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:
MonadIO
comes from thebase
package (as ofbase
version 4.9.0.0), and it provides aliftIO
operation. It is an extremely simple typeclass, focusing exclusively on liftingIO
actions through transformer stacks withIO
at the base.MonadBase
comes from thetransformers-base
package, and it is a generalized version ofMonadIO
. It provides a more generalliftBase
function, which allows lifting to an arbitrary base monad.Generally, this additional power isn’t especially useful, but
MonadBase
appears most often throughMonadBaseControl
, a subclass from themonad-control
package 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.