[Haskell-cafe] Factoring into type classes

Patai Gergely patai_gergely at fastmail.fm
Mon Jan 19 12:40:04 EST 2009

> As a side curiosity, I would love to see an example of any data structure
> which has more than one Functor instance.  Especially those which have
> more than one useful functor instance.

data Record a b = R { field1 :: a, field2 :: b }

If I want to use fmap to transform either field, I have to declare the
type to have the corresponding type variable at the end, i.e. choosing
"Record a b" or "Record b a" is already a design decision, and it is
driven by the standard Functor class in this case. I can define custom
functions fmap1 and fmap2 manually, but then I don't get the advantages
of overloading, like fmapping over a data structure containing my

Now I understand that I can't get everything, and my question is mainly
what to do when such a dilemma comes up. Those who have already
encountered such a dilemma: how did it come up and what did you do to
solve it?


http://www.fastmail.fm - Same, same, but different...

More information about the Haskell-Cafe mailing list