
G'day all. Quoting jerzy.karczmarczuk@info.unicaen.fr:
I have heard that a few times, not recently. This is really interesting, WHAT do you actually miss?
Off the top of my head, from H1.4, I miss: - MonadZero (a lot) - Some of the monad/functor-overloaded functions (quite a bit) - Record punning (slightly)
For me, from the ancient times, what I regret, but just a tiny bit, is that (:) is not an operator as any other, but a "syntactic construct".
I agree with that in principle; it's unfortunate that lists are "built in" as much as they are. But I can't say I really miss this.
Also, monadic comprehensions, which disappeared in order to remove too much of ambiguity...
Five years ago, I would have agreed. I'm over that now, and do-notation is more useful.
Anything else worth mentioning? What *negative* has been suppressed?
I mentioned the un-generalising of "map" above. That probably needs some justification. I think that the best evidence of why this was a mistake is the fact that many modules implement a namespace-overloaded "map". Data.Map.map springs to mind, but there are others. People want to write "map" instead of "fmap". We could have come up with an alternative name for the list-version of "map" and not showed "map" to newbies. (Having said that, some of the un-overloading was good. I'm happy, for example, to reserve "concat" for lists and use "join" for monads.) Cheers, Andrew Bromage