pandora-0.4.3: Pandora/Pattern/Functor/Divisible.hs
module Pandora.Pattern.Functor.Divisible where
import Pandora.Pattern.Functor.Contravariant (Contravariant)
import Pandora.Pattern.Functor.Bivariant (Bivariant)
import Pandora.Paradigm.Primary.Functor.Product (type (:*:))
infixr 5 >*<
class Contravariant t => Divisible t where
{-# MINIMAL (>*<) #-}
(>*<) :: t b -> t c -> t (b :*: c)
class Bivariant v => Divisible_ t v source target where
divide :: Bivariant v => source r (v a b) -> target (v (t a) (t b)) (t r)