Oh, I see... you get horrible overlap problems there. Blech! I guess they'll all act the same (modulo optimized <$ and such), but GHC can't know that and will see them as forever incoherent.
On Fri, Sep 11, 2015 at 1:52 PM, Edward Kmett <ekm...@gmail.com> wrote: > 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 <david.fe...@gmail.com> 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 >> ghc-devs@haskell.org >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs > > _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs