Deriving Contravariant and Profunctor
david.feuer at gmail.com
Fri Sep 11 18:22:15 UTC 2015
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 <ekmett at 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.
> On Fri, Sep 11, 2015 at 12:49 PM, David Feuer <david.feuer at 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 at haskell.org
More information about the ghc-devs