Does anyone recognise these typeclasses:
import Data.Profunctor (Profunctor)
import Data.Functor.Contravariant (Contravariant)
class Profunctor p => ProductProfunctor p where
empty :: p () ()
(***!) :: p a b -> p a' b' -> p (a, a') (b, b')
class Contravariant f => ProductContravariant f where
point :: f ()
(***<) :: f a -> f b -> f (a, b)
They are both a bit like Applicative, and ProductProfunctor is basically
Arrow without the Category part. I'm finding ProductProfunctor useful for
marshalling data from a database into Haskell, and both of them come up a
lot inside my database library.
Has anyone ever seen these before? Has Edward Kmett written a library for
these already? Thanks,
Tom
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe