proarrow-0: Category theory with a central role for profunctors
Safe HaskellNone
LanguageHaskell2010

Proarrow.Object.BinaryCoproduct

Documentation

class CategoryOf k => HasBinaryCoproducts k where Source Comments #

Minimal complete definition

(|||)

Associated Types

type (a :: k) || (b :: k) :: k infixl 4 Source Comments #

Methods

lft :: forall (a :: k) (b :: k). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: k) (a' :: k) (b :: k). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: k) (b :: k). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: k) (b :: k) (b' :: k). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: k) (a :: k) (y :: k). (x ~> a) -> (y ~> a) -> (x || y) ~> a infixl 4 Source Comments #

(+++) :: forall (a :: k) (b :: k) (x :: k) (y :: k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) infixl 4 Source Comments #

Instances

Instances details
HasBinaryCoproducts BOOL Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Bool

Associated Types

type 'TRU || (b :: BOOL) 
Instance details

Defined in Proarrow.Category.Instance.Bool

type 'TRU || (b :: BOOL) = 'TRU
type 'FLS || (b :: BOOL) 
Instance details

Defined in Proarrow.Category.Instance.Bool

type 'FLS || (b :: BOOL) = b
type (a :: BOOL) || 'TRU 
Instance details

Defined in Proarrow.Category.Instance.Bool

type (a :: BOOL) || 'TRU = 'TRU
type (a :: BOOL) || 'FLS 
Instance details

Defined in Proarrow.Category.Instance.Bool

type (a :: BOOL) || 'FLS = a

Methods

lft :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: BOOL) (a' :: BOOL) (b :: BOOL). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: BOOL) (b :: BOOL) (b' :: BOOL). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: BOOL) (a :: BOOL) (y :: BOOL). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: BOOL) (b :: BOOL) (x :: BOOL) (y :: BOOL). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

HasBinaryCoproducts LINEAR Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Associated Types

type ('L a :: LINEAR) || ('L b :: LINEAR) 
Instance details

Defined in Proarrow.Category.Instance.Linear

type ('L a :: LINEAR) || ('L b :: LINEAR) = 'L (Either a b)

Methods

lft :: forall (a :: LINEAR) (b :: LINEAR). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: LINEAR) (a' :: LINEAR) (b :: LINEAR). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: LINEAR) (b :: LINEAR). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: LINEAR) (b :: LINEAR) (b' :: LINEAR). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: LINEAR) (a :: LINEAR) (y :: LINEAR). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: LINEAR) (b :: LINEAR) (x :: LINEAR) (y :: LINEAR). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

HasBinaryCoproducts POINTED Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.PointedHask

Associated Types

type ('P a :: POINTED) || ('P b :: POINTED) 
Instance details

Defined in Proarrow.Category.Instance.PointedHask

type ('P a :: POINTED) || ('P b :: POINTED) = 'P (a || b)

Methods

lft :: forall (a :: POINTED) (b :: POINTED). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: POINTED) (a' :: POINTED) (b :: POINTED). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: POINTED) (b :: POINTED). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: POINTED) (b :: POINTED) (b' :: POINTED). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: POINTED) (a :: POINTED) (y :: POINTED). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: POINTED) (b :: POINTED) (x :: POINTED) (y :: POINTED). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

HasBinaryCoproducts () Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Associated Types

type '() || '() 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type '() || '() = '()

Methods

lft :: forall (a :: ()) (b :: ()). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: ()) (a' :: ()) (b :: ()). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: ()) (b :: ()). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: ()) (b :: ()) (b' :: ()). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: ()) (a :: ()) (y :: ()). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: ()) (b :: ()) (x :: ()) (y :: ()). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

HasBinaryCoproducts Type Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Associated Types

type (a :: Type) || (b :: Type) 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type (a :: Type) || (b :: Type) = Either a b

Methods

lft :: (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall a b x y. (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

HasBinaryCoproducts (FIN ('S n)) => HasBinaryCoproducts (FIN ('S ('S n))) Source Comments #

Maximum

Instance details

Defined in Proarrow.Category.Instance.Fin

Methods

lft :: forall (a :: FIN ('S ('S n))) (b :: FIN ('S ('S n))). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: FIN ('S ('S n))) (a' :: FIN ('S ('S n))) (b :: FIN ('S ('S n))). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: FIN ('S ('S n))) (b :: FIN ('S ('S n))). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: FIN ('S ('S n))) (b :: FIN ('S ('S n))) (b' :: FIN ('S ('S n))). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: FIN ('S ('S n))) (a :: FIN ('S ('S n))) (y :: FIN ('S ('S n))). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: FIN ('S ('S n))) (b :: FIN ('S ('S n))) (x :: FIN ('S ('S n))) (y :: FIN ('S ('S n))). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

HasBinaryCoproducts (FIN ('S 'Z)) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Fin

Associated Types

type ('FZ :: FIN ('S 'Z)) || ('FZ :: FIN ('S 'Z)) 
Instance details

Defined in Proarrow.Category.Instance.Fin

type ('FZ :: FIN ('S 'Z)) || ('FZ :: FIN ('S 'Z)) = 'FZ :: FIN ('S 'Z)

Methods

lft :: forall (a :: FIN ('S 'Z)) (b :: FIN ('S 'Z)). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: FIN ('S 'Z)) (a' :: FIN ('S 'Z)) (b :: FIN ('S 'Z)). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: FIN ('S 'Z)) (b :: FIN ('S 'Z)). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: FIN ('S 'Z)) (b :: FIN ('S 'Z)) (b' :: FIN ('S 'Z)). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: FIN ('S 'Z)) (a :: FIN ('S 'Z)) (y :: FIN ('S 'Z)). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: FIN ('S 'Z)) (b :: FIN ('S 'Z)) (x :: FIN ('S 'Z)) (y :: FIN ('S 'Z)). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

HasBinaryCoproducts (FIN 'Z) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Fin

Associated Types

type (a :: FIN 'Z) || (b :: FIN 'Z) 
Instance details

Defined in Proarrow.Category.Instance.Fin

type (a :: FIN 'Z) || (b :: FIN 'Z) = a

Methods

lft :: forall (a :: FIN 'Z) (b :: FIN 'Z). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: FIN 'Z) (a' :: FIN 'Z) (b :: FIN 'Z). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: FIN 'Z) (b :: FIN 'Z). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: FIN 'Z) (b :: FIN 'Z) (b' :: FIN 'Z). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: FIN 'Z) (a :: FIN 'Z) (y :: FIN 'Z). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: FIN 'Z) (b :: FIN 'Z) (x :: FIN 'Z) (y :: FIN 'Z). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

Num a => HasBinaryCoproducts (MatK a) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Mat

Methods

lft :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => a0 ~> (a0 || b) Source Comments #

lft' :: forall (a0 :: MatK a) (a' :: MatK a) (b :: MatK a). (a0 ~> a') -> Obj b -> a0 ~> (a' || b) Source Comments #

rgt :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => b ~> (a0 || b) Source Comments #

rgt' :: forall (a0 :: MatK a) (b :: MatK a) (b' :: MatK a). Obj a0 -> (b ~> b') -> b ~> (a0 || b') Source Comments #

(|||) :: forall (x :: MatK a) (a0 :: MatK a) (y :: MatK a). (x ~> a0) -> (y ~> a0) -> (x || y) ~> a0 Source Comments #

(+++) :: forall (a0 :: MatK a) (b :: MatK a) (x :: MatK a) (y :: MatK a). (a0 ~> x) -> (b ~> y) -> (a0 || b) ~> (x || y) Source Comments #

HasBinaryProducts k => HasBinaryCoproducts (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

lft :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: OPPOSITE k) (a' :: OPPOSITE k) (b :: OPPOSITE k). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (b' :: OPPOSITE k). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: OPPOSITE k) (a :: OPPOSITE k) (y :: OPPOSITE k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (x :: OPPOSITE k) (y :: OPPOSITE k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

BiCCC k => HasBinaryCoproducts (FK k) Source Comments # 
Instance details

Defined in Proarrow.Helper.CCC

Methods

lft :: forall (a :: FK k) (b :: FK k). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: FK k) (a' :: FK k) (b :: FK k). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: FK k) (b :: FK k). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: FK k) (b :: FK k) (b' :: FK k). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: FK k) (a :: FK k) (y :: FK k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: FK k) (b :: FK k) (x :: FK k) (y :: FK k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

HasBinaryCoproducts k => HasBinaryCoproducts (PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

lft :: forall (a :: PROD k) (b :: PROD k). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: PROD k) (a' :: PROD k) (b :: PROD k). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: PROD k) (b :: PROD k). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: PROD k) (b :: PROD k) (b' :: PROD k). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: PROD k) (a :: PROD k) (y :: PROD k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: PROD k) (b :: PROD k) (x :: PROD k) (y :: PROD k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

(CategoryOf j, CategoryOf k) => HasBinaryCoproducts (PRO j k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

lft :: forall (a :: PRO j k) (b :: PRO j k). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: PRO j k) (a' :: PRO j k) (b :: PRO j k). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: PRO j k) (b :: PRO j k). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: PRO j k) (b :: PRO j k) (b' :: PRO j k). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: PRO j k) (a :: PRO j k) (y :: PRO j k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: PRO j k) (b :: PRO j k) (x :: PRO j k) (y :: PRO j k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

HasBinaryCoproducts (k1 -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Nat

Methods

lft :: forall (a :: k1 -> Type) (b :: k1 -> Type). (Ob a, Ob b) => a ~> (a || b) Source Comments #

lft' :: forall (a :: k1 -> Type) (a' :: k1 -> Type) (b :: k1 -> Type). (a ~> a') -> Obj b -> a ~> (a' || b) Source Comments #

rgt :: forall (a :: k1 -> Type) (b :: k1 -> Type). (Ob a, Ob b) => b ~> (a || b) Source Comments #

rgt' :: forall (a :: k1 -> Type) (b :: k1 -> Type) (b' :: k1 -> Type). Obj a -> (b ~> b') -> b ~> (a || b') Source Comments #

(|||) :: forall (x :: k1 -> Type) (a :: k1 -> Type) (y :: k1 -> Type). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Comments #

(+++) :: forall (a :: k1 -> Type) (b :: k1 -> Type) (x :: k1 -> Type) (y :: k1 -> Type). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Comments #

left :: forall {k} (c :: k) (a :: k) (b :: k). (HasBinaryCoproducts k, Ob c) => (a ~> b) -> (a || c) ~> (b || c) Source Comments #

right :: forall {k} (c :: k) (a :: k) (b :: k). (HasBinaryCoproducts k, Ob c) => (a ~> b) -> (c || a) ~> (c || b) Source Comments #

codiag :: forall {k} (a :: k). (HasBinaryCoproducts k, Ob a) => (a || a) ~> a Source Comments #

swapCoprod' :: forall k (a :: k) (a' :: k) (b :: k) (b' :: k). HasBinaryCoproducts k => (a ~> a') -> (b ~> b') -> (a || b) ~> (b' || a') Source Comments #

swapCoprod :: forall k (a :: k) (b :: k). (HasBinaryCoproducts k, Ob a, Ob b) => (a || b) ~> (b || a) Source Comments #

class (a ** b) ~ (a || b) => TensorIsCoproduct (a :: k) (b :: k) Source Comments #

Instances

Instances details
(a ** b) ~ (a || b) => TensorIsCoproduct (a :: k) (b :: k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

class (HasCoproducts k, Monoidal k, (Unit :: k) ~ (InitialObject :: k), forall (a :: k) (b :: k). TensorIsCoproduct a b) => Cocartesian k Source Comments #

Instances

Instances details
(HasCoproducts k, Monoidal k, (Unit :: k) ~ (InitialObject :: k), forall (a :: k) (b :: k). TensorIsCoproduct a b) => Cocartesian k Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

newtype COPROD k Source Comments #

Constructors

COPR k 

Instances

Instances details
Strong (->) (Previewing a b :: COPROD Type -> COPROD Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

act :: forall a0 b0 (x :: COPROD Type) (y :: COPROD Type). (a0 -> b0) -> Previewing a b x y -> Previewing a b (Act a0 x) (Act b0 y) Source Comments #

Strong (->) (Coprod (->)) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

act :: forall a b (x :: COPROD Type) (y :: COPROD Type). (a -> b) -> Coprod (->) x y -> Coprod (->) (Act a x) (Act b y) Source Comments #

MonoidalAction Type (COPROD Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Associated Types

type Act (p :: Type) ('COPR x :: COPROD Type) 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Act (p :: Type) ('COPR x :: COPROD Type) = 'COPR (p ** x)

Methods

unitor :: forall (x :: COPROD Type). Ob x => Act (Unit :: Type) x ~> x Source Comments #

unitorInv :: forall (x :: COPROD Type). Ob x => x ~> Act (Unit :: Type) x Source Comments #

multiplicator :: forall a b (x :: COPROD Type). (Ob a, Ob b, Ob x) => Act a (Act b x) ~> Act (a ** b) x Source Comments #

multiplicatorInv :: forall a b (x :: COPROD Type). (Ob a, Ob b, Ob x) => Act (a ** b) x ~> Act a (Act b x) Source Comments #

Profunctor p => Profunctor (CoprodDom p :: j1 -> COPROD j2 -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Star

Methods

dimap :: forall (c :: j1) (a :: j1) (b :: COPROD j2) (d :: COPROD j2). (c ~> a) -> (b ~> d) -> CoprodDom p a b -> CoprodDom p c d Source Comments #

(\\) :: forall (a :: j1) (b :: COPROD j2) r. ((Ob a, Ob b) => r) -> CoprodDom p a b -> r Source Comments #

HasCoproducts k => Monoidal (COPROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Associated Types

type Unit 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Unit = 'COPR (InitialObject :: k)

Methods

leftUnitor :: forall (a :: COPROD k). Ob a => ((Unit :: COPROD k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: COPROD k). Ob a => a ~> ((Unit :: COPROD k) ** a) Source Comments #

rightUnitor :: forall (a :: COPROD k). Ob a => (a ** (Unit :: COPROD k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: COPROD k). Ob a => a ~> (a ** (Unit :: COPROD k)) Source Comments #

associator :: forall (a :: COPROD k) (b :: COPROD k) (c :: COPROD k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: COPROD k) (b :: COPROD k) (c :: COPROD k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

HasCoproducts k => SymMonoidal (COPROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

swap' :: forall (a :: COPROD k) (a' :: COPROD k) (b :: COPROD k) (b' :: COPROD k). (a ~> a') -> (b ~> b') -> (a ** b) ~> (b' ** a') Source Comments #

CategoryOf k => CategoryOf (COPROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type (~>) = Coprod ((~>) :: CAT k)
MonoidalAction (COPROD Type) Type Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Associated Types

type Act (p :: COPROD Type) (x :: Type) 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Act (p :: COPROD Type) (x :: Type) = UN ('COPR :: Type -> COPROD Type) (p ** 'COPR x)

Methods

unitor :: Ob x => Act (Unit :: COPROD Type) x ~> x Source Comments #

unitorInv :: Ob x => x ~> Act (Unit :: COPROD Type) x Source Comments #

multiplicator :: forall (a :: COPROD Type) (b :: COPROD Type) x. (Ob a, Ob b, Ob x) => Act a (Act b x) ~> Act (a ** b) x Source Comments #

multiplicatorInv :: forall (a :: COPROD Type) (b :: COPROD Type) x. (Ob a, Ob b, Ob x) => Act (a ** b) x ~> Act a (Act b x) Source Comments #

(Alternative f, Cartesian k, Cocartesian j) => MonoidalProfunctor (CoprodDom (Star f) :: k -> COPROD j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Star

Methods

par0 :: CoprodDom (Star f) (Unit :: k) (Unit :: COPROD j) Source Comments #

par :: forall (x1 :: k) (x2 :: COPROD j) (y1 :: k) (y2 :: COPROD j). CoprodDom (Star f) x1 x2 -> CoprodDom (Star f) y1 y2 -> CoprodDom (Star f) (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalAction (COPROD Type) (COPROD Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Associated Types

type Act (p :: COPROD Type) (x :: COPROD Type) 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Act (p :: COPROD Type) (x :: COPROD Type) = p ** x

Methods

unitor :: forall (x :: COPROD Type). Ob x => Act (Unit :: COPROD Type) x ~> x Source Comments #

unitorInv :: forall (x :: COPROD Type). Ob x => x ~> Act (Unit :: COPROD Type) x Source Comments #

multiplicator :: forall (a :: COPROD Type) (b :: COPROD Type) (x :: COPROD Type). (Ob a, Ob b, Ob x) => Act a (Act b x) ~> Act (a ** b) x Source Comments #

multiplicatorInv :: forall (a :: COPROD Type) (b :: COPROD Type) (x :: COPROD Type). (Ob a, Ob b, Ob x) => Act (a ** b) x ~> Act a (Act b x) Source Comments #

Strong (Coprod (->)) (Replacing a b :: Type -> Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

act :: forall (a0 :: COPROD Type) (b0 :: COPROD Type) x y. Coprod (->) a0 b0 -> Replacing a b x y -> Replacing a b (Act a0 x) (Act b0 y) Source Comments #

Strong (Coprod (->)) (Setting a b :: Type -> Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

act :: forall (a0 :: COPROD Type) (b0 :: COPROD Type) x y. Coprod (->) a0 b0 -> Setting a b x y -> Setting a b (Act a0 x) (Act b0 y) Source Comments #

Strong (Coprod (->)) (->) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

act :: forall (a :: COPROD Type) (b :: COPROD Type) x y. Coprod (->) a b -> (x -> y) -> Act a x -> Act b y Source Comments #

Strong (Coprod (->)) (Previewing a b :: COPROD Type -> COPROD Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

act :: forall (a0 :: COPROD Type) (b0 :: COPROD Type) (x :: COPROD Type) (y :: COPROD Type). Coprod (->) a0 b0 -> Previewing a b x y -> Previewing a b (Act a0 x) (Act b0 y) Source Comments #

Strong (Coprod (->)) (Coprod (->)) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

act :: forall (a :: COPROD Type) (b :: COPROD Type) (x :: COPROD Type) (y :: COPROD Type). Coprod (->) a b -> Coprod (->) x y -> Coprod (->) (Act a x) (Act b y) Source Comments #

Profunctor (Previewing a b :: COPROD Type -> COPROD Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

dimap :: forall (c :: COPROD Type) (a0 :: COPROD Type) (b0 :: COPROD Type) (d :: COPROD Type). (c ~> a0) -> (b0 ~> d) -> Previewing a b a0 b0 -> Previewing a b c d Source Comments #

(\\) :: forall (a0 :: COPROD Type) (b0 :: COPROD Type) r. ((Ob a0, Ob b0) => r) -> Previewing a b a0 b0 -> r Source Comments #

(HasCoproducts k, Category cat) => MonoidalProfunctor (Coprod cat :: COPROD k -> COPROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

par0 :: Coprod cat (Unit :: COPROD k) (Unit :: COPROD k) Source Comments #

par :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod cat x1 x2 -> Coprod cat y1 y2 -> Coprod cat (x1 ** y1) (x2 ** y2) Source Comments #

Profunctor p => Profunctor (Coprod p :: COPROD k -> COPROD j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

dimap :: forall (c :: COPROD k) (a :: COPROD k) (b :: COPROD j) (d :: COPROD j). (c ~> a) -> (b ~> d) -> Coprod p a b -> Coprod p c d Source Comments #

(\\) :: forall (a :: COPROD k) (b :: COPROD j) r. ((Ob a, Ob b) => r) -> Coprod p a b -> r Source Comments #

(HasCoproducts k, Ob a) => Monoid ('COPR a :: COPROD k) Source Comments # 
Instance details

Defined in Proarrow.Monoid

Promonad p => Promonad (Coprod p :: COPROD j -> COPROD j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

id :: forall (a :: COPROD j). Ob a => Coprod p a a Source Comments #

(.) :: forall (b :: COPROD j) (c :: COPROD j) (a :: COPROD j). Coprod p b c -> Coprod p a b -> Coprod p a c Source Comments #

type Act (p :: Type) ('COPR x :: COPROD Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Act (p :: Type) ('COPR x :: COPROD Type) = 'COPR (p ** x)
type UN ('COPR :: j -> COPROD j) ('COPR k :: COPROD j) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type UN ('COPR :: j -> COPROD j) ('COPR k :: COPROD j) = k
type Unit Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Unit = 'COPR (InitialObject :: k)
type (~>) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type (~>) = Coprod ((~>) :: CAT k)
type Ob (a :: COPROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Ob (a :: COPROD k) = (Is ('COPR :: k -> COPROD k) a, Ob (UN ('COPR :: k -> COPROD k) a))
type (a :: COPROD k) ** (b :: COPROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type (a :: COPROD k) ** (b :: COPROD k) = 'COPR (UN ('COPR :: k -> COPROD k) a || UN ('COPR :: k -> COPROD k) b)
type Act (p :: COPROD Type) (x :: Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Act (p :: COPROD Type) (x :: Type) = UN ('COPR :: Type -> COPROD Type) (p ** 'COPR x)
type Act (p :: COPROD Type) (x :: COPROD Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Act (p :: COPROD Type) (x :: COPROD Type) = p ** x

data Coprod (p :: j +-> k) (a :: COPROD k) (b :: COPROD j) where Source Comments #

Constructors

Coprod 

Fields

Instances

Instances details
Strong (->) (Coprod (->)) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

act :: forall a b (x :: COPROD Type) (y :: COPROD Type). (a -> b) -> Coprod (->) x y -> Coprod (->) (Act a x) (Act b y) Source Comments #

Strong (Coprod (->)) (Replacing a b :: Type -> Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

act :: forall (a0 :: COPROD Type) (b0 :: COPROD Type) x y. Coprod (->) a0 b0 -> Replacing a b x y -> Replacing a b (Act a0 x) (Act b0 y) Source Comments #

Strong (Coprod (->)) (Setting a b :: Type -> Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

act :: forall (a0 :: COPROD Type) (b0 :: COPROD Type) x y. Coprod (->) a0 b0 -> Setting a b x y -> Setting a b (Act a0 x) (Act b0 y) Source Comments #

Strong (Coprod (->)) (->) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

act :: forall (a :: COPROD Type) (b :: COPROD Type) x y. Coprod (->) a b -> (x -> y) -> Act a x -> Act b y Source Comments #

Strong (Coprod (->)) (Previewing a b :: COPROD Type -> COPROD Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

act :: forall (a0 :: COPROD Type) (b0 :: COPROD Type) (x :: COPROD Type) (y :: COPROD Type). Coprod (->) a0 b0 -> Previewing a b x y -> Previewing a b (Act a0 x) (Act b0 y) Source Comments #

Strong (Coprod (->)) (Coprod (->)) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

act :: forall (a :: COPROD Type) (b :: COPROD Type) (x :: COPROD Type) (y :: COPROD Type). Coprod (->) a b -> Coprod (->) x y -> Coprod (->) (Act a x) (Act b y) Source Comments #

(HasCoproducts k, Category cat) => MonoidalProfunctor (Coprod cat :: COPROD k -> COPROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

par0 :: Coprod cat (Unit :: COPROD k) (Unit :: COPROD k) Source Comments #

par :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod cat x1 x2 -> Coprod cat y1 y2 -> Coprod cat (x1 ** y1) (x2 ** y2) Source Comments #

Profunctor p => Profunctor (Coprod p :: COPROD k -> COPROD j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

dimap :: forall (c :: COPROD k) (a :: COPROD k) (b :: COPROD j) (d :: COPROD j). (c ~> a) -> (b ~> d) -> Coprod p a b -> Coprod p c d Source Comments #

(\\) :: forall (a :: COPROD k) (b :: COPROD j) r. ((Ob a, Ob b) => r) -> Coprod p a b -> r Source Comments #

Promonad p => Promonad (Coprod p :: COPROD j -> COPROD j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

id :: forall (a :: COPROD j). Ob a => Coprod p a a Source Comments #

(.) :: forall (b :: COPROD j) (c :: COPROD j) (a :: COPROD j). Coprod p b c -> Coprod p a b -> Coprod p a c Source Comments #

class Act a b ~ (a || b) => ActIsCoprod (a :: k) (b :: k) Source Comments #

Instances

Instances details
Act a b ~ (a || b) => ActIsCoprod (a :: k) (b :: k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

class (Strong ((~>) :: CAT k) p, HasCoproducts k, forall (a :: k) (b :: k). ActIsCoprod a b) => StrongCoprod (p :: CAT k) Source Comments #

Instances

Instances details
(Strong ((~>) :: CAT k) p, HasCoproducts k, forall (a :: k) (b :: k). ActIsCoprod a b) => StrongCoprod (p :: k +-> k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

left' :: forall {k} p (c :: k) (a :: k) (b :: k). (StrongCoprod p, Ob c) => p a b -> p (a || c) (b || c) Source Comments #

right' :: forall {k} p (c :: k) (a :: k) (b :: k). (StrongCoprod p, Ob c) => p a b -> p (c || a) (c || b) Source Comments #