| 27 | | The proposed interface of mtl-2 is close to that of mtl-1, but with the following differences: |
| 28 | | * instances of {{{Applicative}}} and {{{Alternative}}} have been added as appropriate. |
| | 27 | The proposed interface of mtl-2 is close to that of mtl-1, but with the following differences (illustrated with Reader): |
| | 28 | * instances of {{{Applicative}}} and {{{Alternative}}} have been added as appropriate, e.g. |
| | 29 | {{{ |
| | 30 | instance (Applicative m) => Applicative (ReaderT r m) where ... |
| | 31 | instance (Alternative m) => Alternative (ReaderT r m) where ... |
| | 32 | }}} |
| 41 | | * The MonadCont instance for StateT is not compatible with the monad transformer. The transformers package provides the correct lifting (in which callcc causes the state to rollback on entering the saved continuation), but also provides the MTL lifting for compatibility, and this is used by monads-fd. It could be switched to the correct lifting later. |
| 42 | | * The ErrorT monad transformer has an Error constraint, so that errors can be passed to the fail method of the Monad class. |
| 43 | | * ListT only works on commutative monads. |
| | 61 | * The {{{MonadCont}}} instance for {{{StateT}}} is not compatible with the monad transformer. The transformers package provides the correct lifting (in which callcc causes the state to rollback on entering the saved continuation), but also provides the MTL lifting for compatibility, and this is used by monads-fd. It could be switched to the correct lifting later. |
| | 62 | * The {{{ErrorT}}} monad transformer has an {{{Error}}} constraint, so that errors can be passed to the fail method of the Monad class. |
| | 63 | * {{{ListT}}} only works on commutative monads. |
| 52 | | * 12 because they defined their own Applicative instances (which can now be deleted) |
| 53 | | * 12 because of the changed constraint on Functor instances |
| 54 | | * 1 that defined an overlapping Error instance |
| 55 | | * 18 that used the constructors of base monads |
| 56 | | * 246 failed for other reasons (e.g. failed anyway or depended on one of the other failures) |
| | 72 | * 11 because they defined their own Applicative instances (which can now be deleted) |
| | 73 | * 11 because of the changed constraint on Functor instances |
| | 74 | * 1 that defined an overlapping Error instance ([http://hackage.haskell.org/package/hssqlppp hssqlppp]) |
| | 75 | * 18 that used the constructors of base monads; in 16 of these (except [http://hackage.haskell.org/package/jmacro jmacro] and [http://hackage.haskell.org/package/yhccore yhccore]) the fixes are trivial |
| | 76 | * 248 failed for other reasons (e.g. failed anyway or depended on one of the other failures) |