Changes between Version 12 and Version 13 of Proposals/transformers

Show
Ignore:
Timestamp:
09/16/10 09:05:31 (4 years ago)
Author:
ross (IP: 81.98.180.212)
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Proposals/transformers

    v12 v13  
    1010== Rationale == 
    1111 
    12 Monad transformers are widely used, but the MTL implementation is tied to functional dependencies, whose future is in doubt.  Many people want to try out versions based on type functions, or without using advanced type classes at all, but their interfaces will then be incompatible with libraries using mtl. 
     12Monad transformers are widely used, but the MTL interface is tied to functional dependencies, whose future is in doubt.  Many people want to try out interfaces based on type functions, or without using experimental type class features, but their interfaces will then be incompatible with libraries using mtl. 
    1313 
    14 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. 
     14The idea is to factor out the monad transformers as the Haskell 98 package.  The objectives for this package are: 
     15 1. that it be as useful as possible by itself, so that it can replace many uses of mtl. 
     16 2. that it serve as a base for other packages adding type classes based on either functional dependencies (e.g. mtl) or type functions, with interfaces referring to the monad transformers being compatible across the different libraries. 
    1517 
    16 The transformers and monads-fd packages have been in use for over 18 months, and are used by 112 and 23 packages respectively.  The split structure has been shown to be viable, but its existence in parallel with mtl has meant extra effort for authors of client packages.  It is time to complete the transition. 
     18The [http://hackage.haskell.org/package/transformers transformers] and [http://hackage.haskell.org/package/monads-fd monads-fd] packages have been in use for over 18 months, and are used by 112 and 23 packages respectively.  The split structure has been shown to be viable, but its existence in parallel with mtl has meant extra effort for authors of client packages.  It is time to complete the transition. 
    1719 
    1820== Structure == 
     
    2022The current mtl is to be split in two: 
    2123 
    22  * [http://hackage.haskell.org/package/transformers transformers] is a Haskell 98 package containing the identity monad (Data.Functor.Identity), transformer classes (Control.Monad.Trans.Class and Control.Monad.IO.Class) and concrete monad transformers with code to lift operators (Control.Monad.Trans.*). 
     24 * [http://hackage.haskell.org/package/transformers transformers] is a Haskell 98 package containing 
     25    * base functors (Data.Functor.Constant and Data.Functor.Identity), 
     26    * operations on functors (Data.Functor.Compose and Data.Functor.Product), 
     27    * transformer classes (Control.Monad.Trans.Class and Control.Monad.IO.Class) and 
     28    * concrete monad transformers with code to lift operators (Control.Monad.Trans.*). 
    2329 The package can be used on its own (see the [http://hackage.haskell.org/packages/archive/transformers/latest/doc/html/Control-Monad-Trans-Class.html Control.Monad.Trans.Class documentation] for examples), or with packages adding type classes. 
    2430 
    25  * mtl-2 (the current [http://hackage.haskell.org/package/monads-fd monads-fd]) depends on transformers and adds type classes using functional dependencies.  Usage is very close to mtl-1, except for the differences listed below. 
     31 * mtl-2 (the current [http://hackage.haskell.org/package/monads-fd monads-fd]) depends on transformers and adds type classes using functional dependencies.  It has the same modules as mtl-1 and usage is very close, except for the differences listed below. 
    2632 
    2733== Incompatibilities == 
     
    9298    * 1 that defined an overlapping Error instance 
    9399 * 53 failed because they depended on one of the other failures 
     100The attached test report lists the packages involved. 
    94101 
    95102== Other issues ==