Changes between Version 2 and Version 3 of Proposals/transformers
- Timestamp:
- 11/29/09 17:51:10 (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Proposals/transformers
v2 v3 4 4 The proposal is to restructure the [http://hackage.haskell.org/package/mtl mtl] package as a compatibility layer over new [http://hackage.haskell.org/package/transformers transformers] and [http://hackage.haskell.org/package/monads-fd monads-fd] packages. A draft of this compatibility layer is available at [http://urchin.earth.li/darcs/ganesh/mtl-compat]. 5 5 6 == Credits == 7 Proposed by Ganesh Sittampalam (maintainer of the mtl compatibility layer) and Ross Paterson (maintainer of transformers and monads-fd). If this proposal is accepted, these packages would be turned over to community control (like the current mtl package). 6 == Proposers == 7 * Ganesh Sittampalam (maintainer of the mtl compatibility layer) 8 * Ross Paterson (maintainer of transformers and monads-fd) 9 If this proposal is accepted, these packages would be turned over to community control (like the current mtl package). 8 10 9 11 == Rationale == … … 13 15 The idea is to factor out the monad transformers as a Haskell 98 package, which can be used by itself or with type classes based on either functional dependencies or type functions. Interfaces referring to the monad transformers would be compatible across the different libraries. 14 16 15 We would encourage clients to switch from mtl to either plain transformers or transformers + monads-fd, but would retain the mtl compatibility layer for the forseeable future.17 A new version of mtl would provide a temporary almost-compatible layer over transformers + monads-fd, and clients would be encouraged (using deprecation) to switch from mtl to either plain transformers or transformers + monads-fd. However since the new and old packages use some of the same modules names, all versions of mtl would need to be hidden. 16 18 17 19 == Structure == … … 29 31 * The [http://urchin.earth.li/darcs/ganesh/mtl-compat new version of mtl] depends on transformers and monads-fd, and is almost a compatible replacement for the current version, except for the differences listed above. 30 32 33 Both transformers and the new mtl would expose the modules {{{Control.Identity}}} and {{{Control.Monad.Trans}}}, though the mtl versions would be re-exports of the transformers modules. Thus people using {{{ghc --make}}} would still see conflicts. Hence the new mtl would have to be deprecated and hidden. Eventually it would be removed. 34 31 35 == Open issues == 32 36 … … 37 41 * The module {{{Control.Monad.Cont.Class}}} is Haskell 98. Should it be moved out of monads-fd, and if so where? 38 42 39 * Both transformers and the new mtl would expose the modules {{{Control.Identity}}} and {{{Control.Monad.Trans}}}, though the mtl versions would be re-exports of the transformers modules. Thus people using {{{ghc --make}}} would still see conflicts. What to do?43 * Both transformers and the new mtl would expose the modules {{{Control.Identity}}} and {{{Control.Monad.Trans}}}, though the mtl versions would be re-exports of the transformers modules. Thus people using {{{ghc --make}}} would still see conflicts. 40 44 41 45 == Transition issues ==
