
Jon Fairbairn
fmap f. If I could re-define Haskell from scratch, I'd probably name the Functor type class function 'map'
As it was in Haskell 1.4
There is a stackoverflow thread (#6824255) which mentions paedagogical reasons, simplifying error messages.
That is the reason that I remember, the problem being that it makes sense to teach map on lists before teaching type classes, so error messages mentioning classes were considered confusing.
I was against this, preferring that teaching should use a specialised prelude, but this was rejected on the grounds that teachers wanted to teach “the real language”. I still think this was a mistake.
I wasn't there for that discussion, but the evolution of Haskell as an industrial tool makes this justification look worse in hindsight, now that we have things like the Foldable/Traversable typeclasses. Both of which are fantastic improvements for industrial use, but mean that you see classy signatures even on straightforward list functions. Even numeric literals induce classy type signatures if you're not careful. I think the case for a solid teaching prelude separate from the industrial prelude has become more compelling over time, especially now that GHC can emit custom type error messages. -- Jack