
On 2006-08-18, John Hughes
Jon Fairbairn
A reasonable choice (forestalling the objection that using List.map, listMap or mapList would be too distracting for students) would be
lmap:: (t -> t') -> [t] -> [t'] map:: Functor f => (t -> t') -> f t -> f t'
I'd prefer mapList to lmap, to be honest--at least the connection between the name and the type is clear. But remember, this would at a stroke make Haskell' incompatible with all existing Haskell textbooks. Even if publishers brought out new editions, even if we told students to buy them, there are many, many second hand books in circulation, and it would be years before one could rely on students having Haskell' books. All that time, students would write map instead of mapList because that's what the book says, and get stuck with incomprehensible error messages. Is it really worth an incompatible change in the library functions used by all beginners, just to rename fmap to map? It seems to me that the gain from a change is very small, and the cost considerable.
But list is a functor, so it should work. They just get harder error messages, when their programs are wrong. Let's work on the error messages, not keeping the language harder to understand for more general programs. -- Aaron Denney -><-