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

Reply via email to