Author: Miguel Mitrofanov Build-Type: Simple Cabal-Version: >=1.2.3 Category: Monads Description: A version of monad transformers that (a) allows one to convince the type checker that transformer application is a monad, and (b) doesn't need lots of boilerplate to add a new transformer. It's supposed to play nicely with @Control.Monad.Trans@. . In order to make a new transformer (say, @T@) an instance of @TransM@ (@TransP@, @TransF@) class, all you have to do is: . * define @instance MonadTrans T@ — which you've probably done already . * define @instance Monad m => Monad (T m)@ — also something quite common (for @TransP@ and @TransF@ you'd need another instance for @MonadPlus@ and @MonadFix@, respectively). . * write @instance Trans T where transMInst = instM@ — which is exactly one line of boilerplate. Sorry about that. . After that, you can use your new and shiny transformer in compositions, like @ReaderT Char :. T :. WriterT String@ — and such a composition would automagically become a monad transformer. License: BSD3 License-file: LICENSE Maintainer: miguelimo38@yandex.ru Name: compose-trans Synopsis: Composable monad transformers Version: 0.1 Library Build-Depends: base >= 2 && < 5, mtl Exposed-Modules: Control.Monad.Trans.Category, Control.Monad.Trans.Monad, Control.Monad.Trans.MonadFix, Control.Monad.Trans.MonadPlus Extensions: GeneralizedNewtypeDeriving, RankNTypes, StandaloneDeriving, TypeOperators GHC-Options: -Wall -fno-warn-orphans Hs-Source-Dirs: src