Luke Palmer wrote:
I've been wondering, is it ever possible to have two (extensionally)
different Functor instances for the same type?  I do mean in Haskell;
i.e. (,) doesn't count.  I've failed to either come up with any
examples or prove that they all must be the same using the laws.

For "not-too-exotic" datatypes, in particular for algebraic data types
with polynomial structure (no exponentials, embedded function types, and
other nasties), I would conjecture that indeed there is always exactly
one Functor instance satisfying the identity and composition laws.

Are identity and composition sufficient to guarantee that the
mapped function is actually applied?

   instance Functor f where fmap _ x = x

   fmap id fx ~ fx ~ id fx
   fmap f (fmap g fx) ~ fmap f fx ~ fx ~ fmap (f . g) fx

Claus

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

Reply via email to