[Haskell-cafe] Re: Transformers versus monadLib versus...
es at ertes.de
Tue Jul 6 22:01:11 EDT 2010
Edward Kmett <ekmett at gmail.com> wrote:
> You may want to review the thread here:
> The gist of it is, I would recommend sticking with MTL for right now,
> but confining yourself to the portions of it that transformers +
> monads-fd export (i.e. using StateT s Identity instead of State, or
> avoiding the use of the State constructors and instances on State)
> until transformers is done being refactored and monads-fd +
> transformers becomes more or less mtl compatible and the mtl shim =
> monads-fd + transformers shim is introduced in a future haskell
> platform. At that point in time you should be able to remove mtl and
> just reference monads-fd (and/or monads-tf) + transformers. This has
> the benefit of not fragmenting the user base, letting you link against
> the large quantities of code that is built on the haskell platform
> (i.e. HTTP, etc), and provides an upgrade path to bring the code
> written for use with transformers and the code written for use with
> mtl into alignment so they can all link some day in the relatively
> near future without cabal flipping its lid.
> Of course, adding support for monadLib, which doesn't conflict with
> any of this is a completely concern.
In its highest level "not fragmenting the user base" means going back to
C++ and Windows. So this doesn't appear like a valid argument to me.
I'll choose the package with the highest quality, not the one, which
most people use.
Fragmenting Hackage is bad. But on the other hand I don't see why I
should stick with the inconvenient mtl. Open source software is all
about choice, and as long as the mtl fails to provide the same
flexibility and convenience, I won't use it. Combined with the fact
that fixing it would break existing packages, it appears like I won't go
back to the mtl ever.
MonadLib does conflict with the mtl, because it uses the same function
and type names almost everywhere with only a few minor differences. But
that's seldomly a problem in actual applications.
nightmare = unsafePerformIO (getWrongWife >>= sex)
More information about the Haskell-Cafe