Re: [Haskell-cafe] Better names for

I've heard several times that some Haskell type classes and methods are ill-named.
For instance, a functor can be both covariant and contravariant, while Haskell `Functor` typeclass i just covariant. Would `Cofunctor` be a better name for it? And what about the `fmap` method? Would it be better to call it `comap`? How about `Bifunctor`, `Profunctor` and others?
Hi Marc, part of the answer is: For historical reasons and to preserve backwards compatibility. The term "Functor", however, comes from category theory. MacLane [1] defines the term "Functor" to refer to covariant functors. The notion of "contravariant" is introduced via the concept of "opposite category" [2] which has the same objects but direction of arrows reversed. Thus a contravariant functor F: C -> D is just an ordinary functor C -> D^op. Category theory has no name for the action of a functor on arrows, Haskell had to make up a name, which ended up to be "fmap". Sometimes the notation F(f) is used in category theory where in Haskell we write fmap f. If I could re-define Haskell from scratch, I'd probably name the Functor type class function 'map' and omit the map function on lists, since it is the same as the Functor instance. As for your suggestion of 'comap': The prefix co- in category theory is mostly used in conjunction with the opposite construction [3], whence a category theorist would believe 'comap' to mean the opposite of 'map'. Regards, Olaf [1] Saunders MacLane: Categories for the Working Mathematician. ISBN 7- 5062-6008-5 [2] See Op in Data.Functor.Contravariant [3] See categorical concepts like limit vs. colimit, cone vs. cocone.

Olaf Klinke
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
and omit the map function on lists, since it is the same as the Functor instance.
-- Jón Fairbairn Jon.Fairbairn@cl.cam.ac.uk
participants (2)
-
Jon Fairbairn
-
Olaf Klinke