
On Tue, 20 Oct 2015, Jeremy wrote:
I'm interested in why you think recent changes are making Haskell a less viable alternative to mainstream languages. My experience is the opposite - beginners frequently ask "why is x not a superclass of y?" and "why does function a seem to be the same as b?", and are horrified to be told that it's for historical reasons (y existed before x, a existed before the more general b, etc.).
I would not explain it this way, not even to myself.
This is a big anti-climax for someone coming from a "mainstream" language, where type classes are all in the expected logical hierarchy, and functions/types always have the most general constraints possible.
The most general type would be: f :: Anything a => a and programs would read like f (f (f a) (f b)). I don't think that the Traversable and Foldable functions in Prelude are the most general ones - what about using Arrow class instead of functions? If we always try to get the most general functions into Prelude we will get constant change but certainly not progress. The more general the types become the more type annotations you will need and the more mental type inference the reader of a program must perform. Prelude would tend to depend on the newest type extensions.