From: "Iavor Diatchki" <[EMAIL PROTECTED]>

I know this is not exactly accurate, but for beginners' purposes one
could explain 'Functor' as a container type such as a list or a tree.


Only to students who already know what a (parameterised) list and tree ARE.
Introducing both those concepts, and generalising them first over arbitrary
element types, and then over the kind of container, is something that will
take some time. It's on the way to that point that one needs to be able to
talk about and use lists, without encountering Functor even in error messages.

In any case, if one wanted to avoid the issue, it seems entirely
reasonable to define a function 'mapList' that has the list specific
type.  Most classes probably do this anyway.

That would be the alternative, but I doubt whether any classes do that right
now. What's the point, when map already does the job?

From: Jon Fairbairn <[EMAIL PROTECTED]>

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.

John


_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to