Actually it is trickier than you'd think. With "Functor" you can pretend that contravariance doesn't exist.
With both profunctor and contravariant it is necessarily part of the puzzle. data Compose f g a = Compose (f (g a)) * are both f and g contravariant leading to a functor? * is f contravariant and g covariant leading to a contravariant functor? * is f covariant and g contravariant leading to a contravariant functor? data Wat p f a b = Wat (p (f a) b) is p a Profunctor or a Bifunctor? is f Contravariant or a Functor? We investigated adding TH code-generation for the contravariant package, and ultimately rejected it on these grounds. https://github.com/ekmett/contravariant/issues/17 -Edward On Fri, Sep 11, 2015 at 12:49 PM, David Feuer <[email protected]> wrote: > Would it be possible to add mechanisms to derive Contravariant and > Profunctor instances? As with Functor, each algebraic datatype can > only have one sensible instance of each of these. > > David Feuer > _______________________________________________ > ghc-devs mailing list > [email protected] > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >
_______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
