packages feed

compose-trans-0.0: compose-trans.cabal

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 for 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 transmormer.
License:	BSD3
License-file:	LICENSE
Maintainer:	miguelimo38@yandex.ru
Name:		compose-trans
Synopsis:	Composable monad transformers
Version:	0.0

Library
  Build-Depends:	base >= 2 && <= 4, 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