retard wrote:
Sun, 14 Feb 2010 17:36:59 -0600, Andrei Alexandrescu wrote:
bearophile wrote:
- And finally in D2 there are several new features that are sometimes
only half-implemented, and generally no one has tried them in long
programs, they seem to come from just the mind of few (intelligent)
people, they don't seem battle-tested at all. Such new features are a
dangerous bet, they can hide many traps and problems. Finalizing the D2
language before people have actually tried to use such features in some
larger programs looks dangerous. Recently I have understood that this
is why Simon Peyton-Jones said "Avoid success at all costs" regarding
Haskell, that he has slowly developed for about 15 years: to give the
language the time to be tuned, to remove warts, to improve it before
people start to use it for rear and it needs to be frozen (today we are
probably in a phase when Haskell has to be frozen, because there is
enough software written in it that you can't lightly break backward
compatibility).
The response of the Haskell community seems to be "avoid avoiding
success". Anyway, either slogan shouldn't be taken out of context, and I
don't think the situations of the two languages are easily comparable.
For example, a few years ago monads weren't around. At that point, a
different I/O method was considered "it" for functional programs (I
swear I know which, but I forgot).
There's not much choice here. Probably explicit state passing with a
state variable? People also invented other methods, but monads provided
an useful abstraction for other kind of use as well.
I'm telling you that pre-monads there was an I/O paradigm that everybody
FP swore by. I learned about it in 2001 in my first grad level course,
and actually wrote programs using it. The professor stressed how it had
been all a fad and that monads may also be one. Since you waste no
opportunity to walk us through your vast library, you may as well remind
us what it was.
Andrei