new major release of transformers package
ekmett at gmail.com
Thu Mar 8 05:03:57 CET 2012
On Wed, Mar 7, 2012 at 7:43 PM, Ross Paterson <ross at soi.city.ac.uk> wrote:
> Seeking views before a new major release of transformers package.
> The docs are here:
> The source is here:
> darcs get http://code.haskell.org/~ross/transformers
> The major changes from version 0.2.2.0 are:
> * Foldable and Traversable instances for transformers that support them.
> * extra Monad instances:
> instance (MonadFix m) => MonadFix (MaybeT m)
> instance (MonadFix m) => MonadFix (IdentityT m)
> instance (Monad f, Monad g) => Monad (Product f g)
> instance (MonadPlus f, MonadPlus g) => MonadPlus (Product f g)
> instance (MonadFix f, MonadFix g) => MonadFix (Product f g)
> * new functors Backwards and Reverse
> * a new Lift transformer, a generalization of Errors
> * generalized constructor functions:
> state :: Monad m => (s -> (a, s)) -> StateT s m a
> reader :: Monad m => (r -> a) -> ReaderT r m a
> writer :: Monad m => (a, w) -> WriterT w m a
If the definitions of 'modify' ran through 'state' they could avoid a round
trip through the monad.
Another issue that has been raised is: should the instance
> instance Monad (ContT r m)
> have a Monad constraint so that it can define fail?
One of the things I liked about the recent change that brought the monad
instance for Either into Control.Monad.Instances was that we didn't go out
of our way to screw up a perfectly good monad in order to better support
fail, and the same argument could be applied to pollute Codensity, which
also currently requires nothing of 'm', but which has ContT r m-like uses
involving types like Endo. I'm not a fan of 'slippery slope' arguments, but
this strikes me as a slippery slope. ;)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Libraries