[Haskell-cafe] Martin Odersky on "What's wrong with Monads"
MightyByte
mightybyte at gmail.com
Thu Jun 28 17:03:22 CEST 2012
Tillmann Rendel <rendel <at> informatik.uni-marburg.de> writes:
>
> > Which drawbacks do you see besides increased verbosity?
>
> Well, you did change the equation "amount (Leaf x) = x" to "amount fun
> (Leaf x) = x". In a larger example, this means that you need to change
> many lines of many functions, just to get the the value of fun from the
> point where it is known to the point where you need it.
I would argue that no matter how good one's language is, there will always exist
realistic refactorings that require you to make sweeping changes to a large
portion of your code base.
> > [...] I am wondering which ways of doing this in Haskell you mean.
>
> I thought of the following three options, but see also Nathan Howells
> email for another alternative (that is related to my option (1) below):
>
> (1) Implicit parameters:
<snip>
> (2) Lexical Scoping:
<snip>
> (3) UnsafePerformIO:
<snip>
> I'm not happy with any of these options. Personally, I would probably go
> ahead and transform the whole program just to get the value of fun to
> where it is needed. Nevertheless, having actually done this before, I
> understand why Martin Odersky doesn't like doing it :)
I think that Martin's statement is an unavoidable fact of life that follows
directly from the definition of purity and the mechanics of data dependencies.
Of course nobody likes making sweeping changes to their app because they didn't
anticipate the way the future would evolve. But lets not blame monads for what
is really a much more fundamental phenomenon.
More information about the Haskell-Cafe
mailing list