map and fmap

Iavor Diatchki iavor.diatchki at
Wed Aug 23 02:28:45 EDT 2006


On 8/22/06, John Meacham <john at> wrote:
> I am not talking about type signatures, I am talking about having to
> annotate in the middle of a term.
> f x y | x `member` map g freeVars y  = ....
> having to become
> f x y | x `member` map g (freeVars y :: [Id])  = ....

There is no need to write such types... In this particular case the
type of 'elem' indicates that the argument is a list.  I don't think
that a polymorphic 'map' function requires any more signatures than,
say, '>>='.  This certainly is not my experience when I use 'fmap'...

> So, I am not saying renaming fmap to map is bad outright, I am just
> saying that the question is trickier than just the error message problem
> it was previously stated in terms of.

Do you have an example illustrating what is tricky about 'fmap'?  As
far as I understand 'map' used to be polymorphic, and later the
distinction between 'map' and 'fmap' was specifically introduced to
avoid the error messages that may confuse beginners.


More information about the Haskell-prime mailing list