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 Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe