
As examples of language features that should be removed or revised, how about these:
(n+k, monomorphism, defaulting, monad comprehensions) All of this has been debated (endlessly!) once before. Not that it shouldn't be debated again, but the wrapup from long ago looks like this: n+k (the issue that won't die). Removing n+k would probably be fairly pointless, given that it doesn't simplify much (except syntax) and is in wide use. Points: * Some people would like to see views introduced in a way that makes current n+k a special case (views would be nice!) * Everyone agreed that n+k really should be used for some sort of special "Natural number" type. But we didn't want to add a new type. Monomorphism (another issue that won't die!). Without scoped type variables, monomorphism is essential to avoid ambiguity. If scoped type variables appear progress could be made. Defaulting. Again, lots of old debate on this. Nobody is particularly happy with the current design but something is needed. A more general mechanism would be welcomed but hasn't been implemented as far as I know. List comprehension / MonadPlus. This was definitely a mistake (in my humble opinion!) but the idea was that we wanted to create a less confusing environment for beginners. This could be changed back with relatively little effort but the bigger issue of how to insulate naive users from langage complexity is an important one. Any change to the Haskell standard is going to require a lot of effort. Haskell is what it is because so many people spent so much time getting things right. I would love to see a Haskell 2.0 someday - I hope that the process continues to be as rigorous as the one that let to Haskell 98. John