
Also, why were monad comprehensions removed from Haskell? Was it for efficiency? No, it was to help beginners. When list comprehensions, and other list operators like ++ and filter were overloaded, then errors involving the class system became much more common, and in particular cropped up for simple list processing functions. These are exactly the kinds of functions that beginning Haskell programmers write, and error messages involving class Monad are unlikely to help them! We decided consciously to keep the types of list functions simple, so that learners aren't forced to face the complexity of the class system from the word go. Overloading comprehensions is nice for experts, but even experts were beginners once! It's important that learning Haskell is not too difficult, otherwise there will eventually be no experts. Hence the decision. John Hughes
participants (1)
-
John Hughes