monadclasses alternatives and similar packages
Based on the "monad" category.
Alternatively, view monadclasses alternatives based on common mentions on social networks and blogs.

monadvalidate
(NOTE: REPOSITORY MOVED TO NEW OWNER: https://github.com/lexilambda/monadvalidate) A Haskell monad transformer library for data validation 
monadcontrol
Lift control operations, like exception catching, through monad transformers 
monadtime
Type class for monads which carry the notion of the current time. 
monadunliftref
Typeclasses for representing monad (transformer) morphisms 
monadunlift
Typeclasses for representing monad (transformer) morphisms 
monadloggerprefix
Easily add a prefix to your MonadLogger output. 
monadbatcher
An applicative monad that batches commands for later more efficient execution 
monadsupply
Support for computations which consume values from a (possibly infinite) supply. 
monadioadapter
A Haskell package that adapts between MonadIO and MonadBase IO 
monadtask
Task monad transformer that turns event processing into coroutines programming. 
monadresumption
Resumption and ReactiveResumption Monads for the Haskell programming language. 
monadloopsstm
STMspecific control operators (split out of monadloops as of version 0.4) 
monadintrospect
A reader monad that gives the environment access to the entire transformer stack 
monadopen
Openended computation for when you need it (open recursion) 
monadcontrolidentity
Stronger classes than monadcontrol 
monadpeel
Lift control operations like exception catching through monad transformers 
monadinterleave
Monads with an unsaveInterleaveIOlike operation 
monadcontrolaligned
Lift control operations, like exception catching, through monad transformers 
monadfinally
Guard monadic computations with cleanup actions
Free Global Payroll designed for tech teams
Do you think we are missing an alternative of monadclasses or a related project?
README
See this series of articles for the detailed description and motivation.
This is a more flexible version of mtl, the monad transformers library.
You can have many layers of e.g. state transformers in your stack, and you don't have to explicitly lift your
get
s andput
s, as soon as different state transformers carry different types of states.Example:
a :: (MonadState Bool m, MonadState Int m) => m () a = do put False  set the boolean state modify (+ (1 :: Int))  modify the integer state
mtl requires Θ(n2) instances (like
MonadReader e (StateT s m)
); monadclasses requires only Θ(n) of them (where n is the number of different transformer types).If you'd like to define your own monadclassesstyle class, you have to write much less boilerplate code.