[Haskell-cafe] Re: Transformers versus monadLib versus...

Ertugrul Soeylemez es at ertes.de
Wed Jul 7 23:36:09 EDT 2010

ajb at spamcop.net wrote:

> Quoting Ertugrul Soeylemez <es at ertes.de>:
> > In its highest level "not fragmenting the user base" means going
> > back to C++ and Windows.
> Ha.  You wouldn't say that if you were familiar with the current state
> of C++ on Windows.
> Since nobody has come out and admitted it, here's the real problem:
> What constitutes the best API for a monad library is still a research
> problem.  This is evidenced by the fact that a few times a year we get
> yet another paper which proposes a fundamental change to the API which
> would improve matters in yet another direction.

What's the matter?  The more popular languages don't even go that far to
implement an advanced concept like monads /at all/.  They are slowly
adopting what Haskell programmers take for granted.  Look at how monads
are implemented in F# or even C#.  This is WAY behind Haskell.  They
don't even know about transformers, only about monads, and only in a
very modest way.

Do you realize at what level we are complaining?  We are complaining
that a wonderful feature could be implemented in a more elegant, more
wonderful way.  Programmers in other languages wouldn't even know that
this wonderful feature exists.

But my point is that "not fragmenting the user base" means not using
Haskell or Linux, because everybody uses Windows and C++.  This is not
related to quality at all.  This is just to show how invalid the
argument is that "we shouldn't fragment the user base".

> Transformers, monadLib and MTL all have their respective strengths and
> weaknesses, but they are all considerably behind the state of the art,
> if you go by published research.

To be honest, I don't know any strength of MTL compared to transformers
and monadLib.  Actually even transformers is quite primitive compared to
monadLib.  The only real advantage is that it has flipped run functions
and a built-in MaybeT.

Iavor S. Diatchki has done a great job.


nightmare = unsafePerformIO (getWrongWife >>= sex)

More information about the Haskell-Cafe mailing list