
On Tue, Jul 6, 2010 at 12:05 PM, Ertugrul Soeylemez
Yves Parès
wrote: I was wondering : wouldn't it be possible that things like BaseM be implemented on top of MTL? Couldn't just one develop a package, say mtl-missing, that would contain the functionnalities of monadLib, but compatible with MTL?
I don't know whether they're compatible. Also there is probably nothing to implement from mtl in monadLib, so the more natural choice is not to use mtl at all and just use monadLib.
I'd hate to be forced to go back to mtl. Better update 'operational' to support monadLib. Go forward to a good design instead of trying to keep old, broken designs alive.
You may want to review the thread here: http://www.haskell.org/pipermail/libraries/2009-November/012833.html 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. -Edward Kmett