proarrow
Safe HaskellNone
LanguageGHC2024

Proarrow.Colimit.BinaryCoproduct

Documentation

class CategoryOf k => HasBinaryCoproducts k where Source Github #

Minimal complete definition

withObCoprod, lft, rgt, (|||)

Associated Types

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

Methods

withObCoprod :: forall (a :: k) (b :: k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

Instances

Instances details
HasBinaryCoproducts BOOL Source Github # 
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

withObCoprod :: forall (a :: BOOL) (b :: BOOL) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

HasBinaryCoproducts KIND Source Github # 
Instance details

Defined in Proarrow.Category.Instance.CatProf

Associated Types

type ('K l :: KIND) || ('K r :: KIND) 
Instance details

Defined in Proarrow.Category.Instance.CatProf

type ('K l :: KIND) || ('K r :: KIND) = 'K (l, r)

Methods

withObCoprod :: forall (a :: KIND) (b :: KIND) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

HasBinaryCoproducts COST Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Cost

Associated Types

type ('C a :: COST) || ('C b :: COST) 
Instance details

Defined in Proarrow.Category.Instance.Cost

type ('C a :: COST) || ('C b :: COST) = 'C (Min a b)
type 'INF || (b :: COST) 
Instance details

Defined in Proarrow.Category.Instance.Cost

type 'INF || (b :: COST) = b
type (a :: COST) || 'INF 
Instance details

Defined in Proarrow.Category.Instance.Cost

type (a :: COST) || 'INF = a

Methods

withObCoprod :: forall (a :: COST) (b :: COST) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

HasBinaryCoproducts FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type ('FR a :: FINREL) || ('FR b :: FINREL) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type ('FR a :: FINREL) || ('FR b :: FINREL) = 'FR (Plus a b)

Methods

withObCoprod :: forall (a :: FINREL) (b :: FINREL) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

HasBinaryCoproducts FINSET Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinSet

Associated Types

type ('FS a :: FINSET) || ('FS b :: FINSET) 
Instance details

Defined in Proarrow.Category.Instance.FinSet

type ('FS a :: FINSET) || ('FS b :: FINSET) = 'FS (Plus a b)

Methods

withObCoprod :: forall (a :: FINSET) (b :: FINSET) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

HasBinaryCoproducts LINEAR Source Github # 
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

withObCoprod :: forall (a :: LINEAR) (b :: LINEAR) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

HasBinaryCoproducts POINTED Source Github # 
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

withObCoprod :: forall (a :: POINTED) (b :: POINTED) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

HasBinaryCoproducts () Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Associated Types

type '() || '() 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

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

Methods

withObCoprod :: forall (a :: ()) (b :: ()) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

HasBinaryCoproducts Type Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Associated Types

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

Defined in Proarrow.Colimit.BinaryCoproduct

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

Methods

withObCoprod :: (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

CategoryOf k => HasBinaryCoproducts (FAM k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Fam

Methods

withObCoprod :: forall (a :: FAM k) (b :: FAM k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

(|||) :: forall (x :: FAM k) (a :: FAM k) (y :: FAM k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

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

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

Maximum

Instance details

Defined in Proarrow.Category.Instance.Fin

Methods

withObCoprod :: forall (a :: FIN ('S ('S n))) (b :: FIN ('S ('S n))) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

(+++) :: 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 Github #

HasBinaryCoproducts (FIN ('S 'Z)) Source Github # 
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

withObCoprod :: forall (a :: FIN ('S 'Z)) (b :: FIN ('S 'Z)) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

(+++) :: 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 Github #

HasBinaryCoproducts (FIN 'Z) Source Github # 
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

withObCoprod :: forall (a :: FIN 'Z) (b :: FIN 'Z) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

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

Defined in Proarrow.Category.Instance.Mat

Methods

withObCoprod :: forall (a0 :: MatK a) (b :: MatK a) r. (Ob a0, Ob b) => (Ob (a0 || b) => r) -> r Source Github #

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

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

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

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

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

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

withObCoprod :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

(HasPullbacks k, HasBinaryCoproducts k) => HasBinaryCoproducts (SPAN k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Span

Methods

withObCoprod :: forall (a :: SPAN k) (b :: SPAN k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

(|||) :: forall (x :: SPAN k) (a :: SPAN k) (y :: SPAN k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

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

HasBinaryCoproducts k => HasBinaryCoproducts (COPROD k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

withObCoprod :: forall (a :: COPROD k) (b :: COPROD k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

(|||) :: forall (x :: COPROD k) (a :: COPROD k) (y :: COPROD k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

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

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

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

withObCoprod :: forall (a :: PROD k) (b :: PROD k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

(Applicative f, HasBinaryCoproducts k) => HasBinaryCoproducts (AP f k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Ap

Methods

withObCoprod :: forall (a :: AP f k) (b :: AP f k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

(|||) :: forall (x :: AP f k) (a :: AP f k) (y :: AP f k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

(+++) :: forall (a :: AP f k) (b :: AP f k) (x :: AP f k) (y :: AP f k). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github #

HasBinaryCoproducts (BI FUNK) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.CatFun

Associated Types

type ('B l :: BI FUNK) || ('B r :: BI FUNK) 
Instance details

Defined in Proarrow.Category.Instance.CatFun

type ('B l :: BI FUNK) || ('B r :: BI FUNK) = 'B (COPRODUCT l r) :: BI FUNK

Methods

withObCoprod :: forall (a :: BI FUNK) (b :: BI FUNK) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

(|||) :: forall (x :: BI FUNK) (a :: BI FUNK) (y :: BI FUNK). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

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

(HasBinaryCoproducts k, Promonad p, MonoidalProfunctor (Coprod p)) => HasBinaryCoproducts (KLEISLI p) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Kleisli

Methods

withObCoprod :: forall (a :: KLEISLI p) (b :: KLEISLI p) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

(|||) :: forall (x :: KLEISLI p) (a :: KLEISLI p) (y :: KLEISLI p). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

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

(CategoryOf j, CategoryOf k) => HasBinaryCoproducts (j +-> k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

withObCoprod :: forall (a :: j +-> k) (b :: j +-> k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

lft :: forall (a :: j +-> k) (b :: j +-> k). (Ob a, Ob b) => a ~> (a || b) Source Github #

rgt :: forall (a :: j +-> k) (b :: j +-> k). (Ob a, Ob b) => b ~> (a || b) Source Github #

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

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

Monoid m => HasBinaryCoproducts (MONOIDK m) Source Github # 
Instance details

Defined in Proarrow.Monoid

Methods

withObCoprod :: forall (a :: MONOIDK m) (b :: MONOIDK m) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

(|||) :: forall (x :: MONOIDK m) (a :: MONOIDK m) (y :: MONOIDK m). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

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

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

Defined in Proarrow.Category.Instance.Nat

Methods

withObCoprod :: forall (a :: k1 -> Type) (b :: k1 -> Type) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

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

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

(HasBinaryCoproducts p, Adjunction adj) => HasBinaryCoproducts (DUPLOID adj) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Duploid

Methods

withObCoprod :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

(|||) :: forall (x :: DUPLOID adj) (a :: DUPLOID adj) (y :: DUPLOID adj). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

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

(Ok cs p, Elem HasBinaryCoproducts cs) => HasBinaryCoproducts (FREE cs p) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

withObCoprod :: forall (a :: FREE cs p) (b :: FREE cs p) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

lft :: forall (a :: FREE cs p) (b :: FREE cs p). (Ob a, Ob b) => a ~> (a || b) Source Github #

rgt :: forall (a :: FREE cs p) (b :: FREE cs p). (Ob a, Ob b) => b ~> (a || b) Source Github #

(|||) :: forall (x :: FREE cs p) (a :: FREE cs p) (y :: FREE cs p). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

(+++) :: forall (a :: FREE cs p) (b :: FREE cs p) (x :: FREE cs p) (y :: FREE cs p). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github #

lft' :: forall {k} (a :: k) (a' :: k) (b :: k). HasBinaryCoproducts k => (a ~> a') -> Obj b -> a ~> (a' || b) Source Github #

rgt' :: forall {k} (a :: k) (b :: k) (b' :: k). HasBinaryCoproducts k => Obj a -> (b ~> b') -> b ~> (a || b') Source Github #

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

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

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

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

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

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

Instances

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

Defined in Proarrow.Colimit.BinaryCoproduct

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

Instances

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

Defined in Proarrow.Colimit.BinaryCoproduct

newtype COPROD k Source Github #

Constructors

COPR k 

Instances

Instances details
CategoryOf k => Functor ('COPR :: k -> COPROD k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

map :: forall (a :: k) (b :: k). (a ~> b) -> 'COPR a ~> 'COPR b Source Github #

HasCoproducts k => Monoidal (COPROD k) Source Github #

Coproducts as monoidal tensor.

Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Associated Types

type Unit 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type Unit = 'COPR (InitialObject :: k)

Methods

withOb2 :: forall (a :: COPROD k) (b :: COPROD k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github #

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

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

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

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

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

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

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

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

swap :: forall (a :: COPROD k) (b :: COPROD k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Github #

HasBinaryCoproducts k => HasBinaryCoproducts (COPROD k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

withObCoprod :: forall (a :: COPROD k) (b :: COPROD k) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

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

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

(|||) :: forall (x :: COPROD k) (a :: COPROD k) (y :: COPROD k). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

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

HasInitialObject k => HasInitialObject (COPROD k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Associated Types

type InitialObject 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

initiate :: forall (a :: COPROD k). Ob a => (InitialObject :: COPROD k) ~> a Source Github #

CategoryOf k => CategoryOf (COPROD k) Source Github #

The same category as the category of k, but with coproducts as the tensor.

Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type (~>) = Coprod ((~>) :: CAT k)
HasBinaryProducts k => HasBinaryProducts (COPROD k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

withObProd :: forall (a :: COPROD k) (b :: COPROD k) r. (Ob a, Ob b) => (Ob (a && b) => r) -> r Source Github #

fst :: forall (a :: COPROD k) (b :: COPROD k). (Ob a, Ob b) => (a && b) ~> a Source Github #

snd :: forall (a :: COPROD k) (b :: COPROD k). (Ob a, Ob b) => (a && b) ~> b Source Github #

(&&&) :: forall (a :: COPROD k) (x :: COPROD k) (y :: COPROD k). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Github #

(***) :: forall (a :: COPROD k) (b :: COPROD k) (x :: COPROD k) (y :: COPROD k). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Github #

HasTerminalObject k => HasTerminalObject (COPROD k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Associated Types

type TerminalObject 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

terminate :: forall (a :: COPROD k). Ob a => a ~> (TerminalObject :: COPROD k) Source Github #

HasCoproducts k => MonoidalAction (CoprodAction :: k -> (COPROD k, k) -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Action

Methods

unitor :: forall (x :: k). Ob x => Act (CoprodAction :: k -> (COPROD k, k) -> Type) (Unit :: COPROD k) x ~> x Source Github #

unitorInv :: forall (x :: k). Ob x => x ~> Act (CoprodAction :: k -> (COPROD k, k) -> Type) (Unit :: COPROD k) x Source Github #

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

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

Costrong (CoprodAction :: LINEAR -> (COPROD LINEAR, LINEAR) -> Type) Linear Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

coact :: forall (a :: COPROD LINEAR) (x :: LINEAR) (y :: LINEAR). (Ob a, Ob x, Ob y) => Linear (Act (CoprodAction :: LINEAR -> (COPROD LINEAR, LINEAR) -> Type) a x) (Act (CoprodAction :: LINEAR -> (COPROD LINEAR, LINEAR) -> Type) a y) -> Linear x y Source Github #

MonadPlus m => Strong (CoprodAction :: Type -> (COPROD Type, Type) -> Type) (Kleisli m :: Type -> Type -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Arrow

Methods

act :: forall (a :: COPROD Type) x y. Ob a => Kleisli m x y -> Kleisli m (Act (CoprodAction :: Type -> (COPROD Type, Type) -> Type) a x) (Act (CoprodAction :: Type -> (COPROD Type, Type) -> Type) a y) Source Github #

BiCCC k => Strong (CoprodAction :: k -> (COPROD k, k) -> Type) (Fold :: k -> k -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Fold

Methods

act :: forall (a :: COPROD k) (x :: k) (y :: k). Ob a => Fold x y -> Fold (Act (CoprodAction :: k -> (COPROD k, k) -> Type) a x) (Act (CoprodAction :: k -> (COPROD k, k) -> Type) a y) Source Github #

Strong (CoprodAction :: Type -> (COPROD Type, Type) -> Type) (Previewing a b :: Type -> Type -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

act :: forall (a0 :: COPROD Type) x y. Ob a0 => Previewing a b x y -> Previewing a b (Act (CoprodAction :: Type -> (COPROD Type, Type) -> Type) a0 x) (Act (CoprodAction :: Type -> (COPROD Type, Type) -> Type) a0 y) Source Github #

Strong (CoprodAction :: Type -> (COPROD Type, Type) -> Type) (Replacing a b :: Type -> Type -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

act :: forall (a0 :: COPROD Type) x y. Ob a0 => Replacing a b x y -> Replacing a b (Act (CoprodAction :: Type -> (COPROD Type, Type) -> Type) a0 x) (Act (CoprodAction :: Type -> (COPROD Type, Type) -> Type) a0 y) Source Github #

Strong (CoprodAction :: Type -> (COPROD Type, Type) -> Type) (Rep (Constant (First c)) :: Type -> Type -> Type) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Optic

Methods

act :: forall (a :: COPROD Type) x y. Ob a => Rep (Constant (First c)) x y -> Rep (Constant (First c)) (Act (CoprodAction :: Type -> (COPROD Type, Type) -> Type) a x) (Act (CoprodAction :: Type -> (COPROD Type, Type) -> Type) a y) Source Github #

(Alternative f, Monoidal k, Distributive j) => MonoidalProfunctor (CoprodDom (Star f) :: k -> COPROD j -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Star

Methods

one :: CoprodDom (Star f) (Unit :: k) (Unit :: COPROD j) Source Github #

(**) :: 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 Github #

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

Defined in Proarrow.Profunctor.Instance.Star

Methods

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

lmap :: forall (c :: k) (a :: k) (b :: COPROD j). (c ~> a) -> CoprodDom p a b -> CoprodDom p c b Source Github #

rmap :: forall (b :: COPROD j) (d :: COPROD j) (a :: k). (b ~> d) -> CoprodDom p a b -> CoprodDom p a d Source Github #

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

HasCoproducts k => MonoidalProfunctor (Cocone :: LIST k -> COPROD k -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Cocone

Methods

one :: Cocone (Unit :: LIST k) (Unit :: COPROD k) Source Github #

(**) :: forall (x1 :: LIST k) (x2 :: COPROD k) (y1 :: LIST k) (y2 :: COPROD k). Cocone x1 x2 -> Cocone y1 y2 -> Cocone (x1 ** y1) (x2 ** y2) Source Github #

CategoryOf k => Profunctor (Cocone :: LIST k -> COPROD k -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Cocone

Methods

dimap :: forall (c :: LIST k) (a :: LIST k) (b :: COPROD k) (d :: COPROD k). (c ~> a) -> (b ~> d) -> Cocone a b -> Cocone c d Source Github #

lmap :: forall (c :: LIST k) (a :: LIST k) (b :: COPROD k). (c ~> a) -> Cocone a b -> Cocone c b Source Github #

rmap :: forall (b :: COPROD k) (d :: COPROD k) (a :: LIST k). (b ~> d) -> Cocone a b -> Cocone a d Source Github #

(\\) :: forall (a :: LIST k) (b :: COPROD k) r. ((Ob a, Ob b) => r) -> Cocone a b -> r Source Github #

MonoidalProfunctor (Coprod (Rep Fun)) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

one :: Coprod (Rep Fun) (Unit :: COPROD FINREL) (Unit :: COPROD FINSET) Source Github #

(**) :: forall (x1 :: COPROD FINREL) (x2 :: COPROD FINSET) (y1 :: COPROD FINREL) (y2 :: COPROD FINSET). Coprod (Rep Fun) x1 x2 -> Coprod (Rep Fun) y1 y2 -> Coprod (Rep Fun) (x1 ** y1) (x2 ** y2) Source Github #

MonoidalProfunctor (Coprod Linear) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

one :: Coprod Linear (Unit :: COPROD LINEAR) (Unit :: COPROD LINEAR) Source Github #

(**) :: forall (x1 :: COPROD LINEAR) (x2 :: COPROD LINEAR) (y1 :: COPROD LINEAR) (y2 :: COPROD LINEAR). Coprod Linear x1 x2 -> Coprod Linear y1 y2 -> Coprod Linear (x1 ** y1) (x2 ** y2) Source Github #

MonadPlus m => MonoidalProfunctor (Coprod (Kleisli m) :: COPROD Type -> COPROD Type -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Arrow

Methods

one :: Coprod (Kleisli m) (Unit :: COPROD Type) (Unit :: COPROD Type) Source Github #

(**) :: forall (x1 :: COPROD Type) (x2 :: COPROD Type) (y1 :: COPROD Type) (y2 :: COPROD Type). Coprod (Kleisli m) x1 x2 -> Coprod (Kleisli m) y1 y2 -> Coprod (Kleisli m) (x1 ** y1) (x2 ** y2) Source Github #

ArrowChoice arr => MonoidalProfunctor (Coprod (Arr arr) :: COPROD Type -> COPROD Type -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Arrow

Methods

one :: Coprod (Arr arr) (Unit :: COPROD Type) (Unit :: COPROD Type) Source Github #

(**) :: forall (x1 :: COPROD Type) (x2 :: COPROD Type) (y1 :: COPROD Type) (y2 :: COPROD Type). Coprod (Arr arr) x1 x2 -> Coprod (Arr arr) y1 y2 -> Coprod (Arr arr) (x1 ** y1) (x2 ** y2) Source Github #

(HasCoproducts j, HasCoproducts k, Representable p) => MonoidalProfunctor (Coprod (Adj p) :: COPROD k -> COPROD j -> Type) Source Github # 
Instance details

Defined in Proarrow.Adjunction

Methods

one :: Coprod (Adj p) (Unit :: COPROD k) (Unit :: COPROD j) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD j) (y1 :: COPROD k) (y2 :: COPROD j). Coprod (Adj p) x1 x2 -> Coprod (Adj p) y1 y2 -> Coprod (Adj p) (x1 ** y1) (x2 ** y2) Source Github #

(Functor f, HasCoproducts j, HasCoproducts k) => MonoidalProfunctor (Coprod (Star f) :: COPROD k -> COPROD j -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Star

Methods

one :: Coprod (Star f) (Unit :: COPROD k) (Unit :: COPROD j) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD j) (y1 :: COPROD k) (y2 :: COPROD j). Coprod (Star f) x1 x2 -> Coprod (Star f) y1 y2 -> Coprod (Star f) (x1 ** y1) (x2 ** y2) Source Github #

(HasCoproducts j, HasCoproducts k) => MonoidalProfunctor (Coprod (TerminalProfunctor :: k -> j -> Type) :: COPROD k -> COPROD j -> Type) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

one :: Coprod (TerminalProfunctor :: k -> j -> Type) (Unit :: COPROD k) (Unit :: COPROD j) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD j) (y1 :: COPROD k) (y2 :: COPROD j). Coprod (TerminalProfunctor :: k -> j -> Type) x1 x2 -> Coprod (TerminalProfunctor :: k -> j -> Type) y1 y2 -> Coprod (TerminalProfunctor :: k -> j -> Type) (x1 ** y1) (x2 ** y2) Source Github #

(Profunctor f, Profunctor g, MonoidalProfunctor (Coprod f), MonoidalProfunctor (Coprod g)) => MonoidalProfunctor (Coprod (f :.: g) :: COPROD k -> COPROD j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Composition

Methods

one :: Coprod (f :.: g) (Unit :: COPROD k) (Unit :: COPROD j2) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD j2) (y1 :: COPROD k) (y2 :: COPROD j2). Coprod (f :.: g) x1 x2 -> Coprod (f :.: g) y1 y2 -> Coprod (f :.: g) (x1 ** y1) (x2 ** y2) Source Github #

(HasCoproducts k, Ob r) => MonoidalProfunctor (Coprod (Rep (Constant r)) :: COPROD k -> COPROD k -> Type) Source Github # 
Instance details

Defined in Proarrow.Monoid

Methods

one :: Coprod (Rep (Constant r)) (Unit :: COPROD k) (Unit :: COPROD k) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod (Rep (Constant r)) x1 x2 -> Coprod (Rep (Constant r)) y1 y2 -> Coprod (Rep (Constant r)) (x1 ** y1) (x2 ** y2) Source Github #

HasCoproducts k => MonoidalProfunctor (Coprod (Cont r) :: COPROD k -> COPROD k -> Type) Source Github # 
Instance details

Defined in Proarrow.Promonad.Cont

Methods

one :: Coprod (Cont r) (Unit :: COPROD k) (Unit :: COPROD k) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod (Cont r) x1 x2 -> Coprod (Cont r) y1 y2 -> Coprod (Cont r) (x1 ** y1) (x2 ** y2) Source Github #

(HasCoproducts k, cat ~ Hom k) => MonoidalProfunctor (Coprod cat :: COPROD k -> COPROD k -> Type) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

one :: Coprod cat (Unit :: COPROD k) (Unit :: COPROD k) Source Github #

(**) :: 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 Github #

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

Defined in Proarrow.Colimit.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 Github #

lmap :: forall (c :: COPROD k) (a :: COPROD k) (b :: COPROD j). (c ~> a) -> Coprod p a b -> Coprod p c b Source Github #

rmap :: forall (b :: COPROD j) (d :: COPROD j) (a :: COPROD k). (b ~> d) -> Coprod p a b -> Coprod p a d Source Github #

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

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

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

index :: forall (a :: COPROD k) (b :: COPROD j). Coprod p a b -> a ~> (Coprod p % b) Source Github #

tabulate :: forall (b :: COPROD j) (a :: COPROD k). Ob b => (a ~> (Coprod p % b)) -> Coprod p a b Source Github #

repMap :: forall (a :: COPROD j) (b :: COPROD j). (a ~> b) -> (Coprod p % a) ~> (Coprod p % b) Source Github #

repUniv :: forall (a :: COPROD j). Ob a => Coprod p (Coprod p % a) a Source Github #

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

Defined in Proarrow.Monoid

Methods

mempty :: (Unit :: COPROD k) ~> 'COPR a Source Github #

mappend :: ('COPR a ** 'COPR a) ~> 'COPR a Source Github #

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

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

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

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

HasCoproducts k => FunctorForRep (CoprodAction' :: (COPROD k, k) +-> k) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Action

Methods

fmap :: forall (a :: (COPROD k, k)) (b :: (COPROD k, k)). (a ~> b) -> ((CoprodAction' :: (COPROD k, k) +-> k) @ a) ~> ((CoprodAction' :: (COPROD k, k) +-> k) @ b) Source Github #

type Unit Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type Unit = 'COPR (InitialObject :: k)
type InitialObject Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type (~>) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type (~>) = Coprod ((~>) :: CAT k)
type TerminalObject Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type Ob (a :: COPROD k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type Ob (a :: COPROD k) = WrappedOb ('COPR :: k -> COPROD k) a
type (a :: COPROD k) ** (b :: COPROD k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type (a :: COPROD k) ** (b :: COPROD k) = 'COPR (UN ('COPR :: k -> COPROD k) a || UN ('COPR :: k -> COPROD k) b)
type (Coprod p :: COPROD k -> COPROD j -> Type) % ('COPR a :: COPROD j) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type (Coprod p :: COPROD k -> COPROD j -> Type) % ('COPR a :: COPROD j) = 'COPR (p % a)
type ('COPR a :: COPROD k) || ('COPR b :: COPROD k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type ('COPR a :: COPROD k) || ('COPR b :: COPROD k) = 'COPR (a || b)
type ('COPR a :: COPROD k) && ('COPR b :: COPROD k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type ('COPR a :: COPROD k) && ('COPR b :: COPROD k) = 'COPR (a && b)
type (CoprodAction' :: (COPROD k, k) +-> k) @ ('('COPR a, x) :: (COPROD k, k)) Source Github # 
Instance details

Defined in Proarrow.Category.Monoidal.Action

type (CoprodAction' :: (COPROD k, k) +-> k) @ ('('COPR a, x) :: (COPROD k, k)) = a || x

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

Constructors

Coprod 

Fields

Instances

Instances details
MonoidalProfunctor (Coprod (Rep Fun)) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

one :: Coprod (Rep Fun) (Unit :: COPROD FINREL) (Unit :: COPROD FINSET) Source Github #

(**) :: forall (x1 :: COPROD FINREL) (x2 :: COPROD FINSET) (y1 :: COPROD FINREL) (y2 :: COPROD FINSET). Coprod (Rep Fun) x1 x2 -> Coprod (Rep Fun) y1 y2 -> Coprod (Rep Fun) (x1 ** y1) (x2 ** y2) Source Github #

MonoidalProfunctor (Coprod Linear) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

one :: Coprod Linear (Unit :: COPROD LINEAR) (Unit :: COPROD LINEAR) Source Github #

(**) :: forall (x1 :: COPROD LINEAR) (x2 :: COPROD LINEAR) (y1 :: COPROD LINEAR) (y2 :: COPROD LINEAR). Coprod Linear x1 x2 -> Coprod Linear y1 y2 -> Coprod Linear (x1 ** y1) (x2 ** y2) Source Github #

MonadPlus m => MonoidalProfunctor (Coprod (Kleisli m) :: COPROD Type -> COPROD Type -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Arrow

Methods

one :: Coprod (Kleisli m) (Unit :: COPROD Type) (Unit :: COPROD Type) Source Github #

(**) :: forall (x1 :: COPROD Type) (x2 :: COPROD Type) (y1 :: COPROD Type) (y2 :: COPROD Type). Coprod (Kleisli m) x1 x2 -> Coprod (Kleisli m) y1 y2 -> Coprod (Kleisli m) (x1 ** y1) (x2 ** y2) Source Github #

ArrowChoice arr => MonoidalProfunctor (Coprod (Arr arr) :: COPROD Type -> COPROD Type -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Arrow

Methods

one :: Coprod (Arr arr) (Unit :: COPROD Type) (Unit :: COPROD Type) Source Github #

(**) :: forall (x1 :: COPROD Type) (x2 :: COPROD Type) (y1 :: COPROD Type) (y2 :: COPROD Type). Coprod (Arr arr) x1 x2 -> Coprod (Arr arr) y1 y2 -> Coprod (Arr arr) (x1 ** y1) (x2 ** y2) Source Github #

(HasCoproducts j, HasCoproducts k, Representable p) => MonoidalProfunctor (Coprod (Adj p) :: COPROD k -> COPROD j -> Type) Source Github # 
Instance details

Defined in Proarrow.Adjunction

Methods

one :: Coprod (Adj p) (Unit :: COPROD k) (Unit :: COPROD j) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD j) (y1 :: COPROD k) (y2 :: COPROD j). Coprod (Adj p) x1 x2 -> Coprod (Adj p) y1 y2 -> Coprod (Adj p) (x1 ** y1) (x2 ** y2) Source Github #

(Functor f, HasCoproducts j, HasCoproducts k) => MonoidalProfunctor (Coprod (Star f) :: COPROD k -> COPROD j -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Star

Methods

one :: Coprod (Star f) (Unit :: COPROD k) (Unit :: COPROD j) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD j) (y1 :: COPROD k) (y2 :: COPROD j). Coprod (Star f) x1 x2 -> Coprod (Star f) y1 y2 -> Coprod (Star f) (x1 ** y1) (x2 ** y2) Source Github #

(HasCoproducts j, HasCoproducts k) => MonoidalProfunctor (Coprod (TerminalProfunctor :: k -> j -> Type) :: COPROD k -> COPROD j -> Type) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

one :: Coprod (TerminalProfunctor :: k -> j -> Type) (Unit :: COPROD k) (Unit :: COPROD j) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD j) (y1 :: COPROD k) (y2 :: COPROD j). Coprod (TerminalProfunctor :: k -> j -> Type) x1 x2 -> Coprod (TerminalProfunctor :: k -> j -> Type) y1 y2 -> Coprod (TerminalProfunctor :: k -> j -> Type) (x1 ** y1) (x2 ** y2) Source Github #

(Profunctor f, Profunctor g, MonoidalProfunctor (Coprod f), MonoidalProfunctor (Coprod g)) => MonoidalProfunctor (Coprod (f :.: g) :: COPROD k -> COPROD j2 -> Type) Source Github # 
Instance details

Defined in Proarrow.Profunctor.Instance.Composition

Methods

one :: Coprod (f :.: g) (Unit :: COPROD k) (Unit :: COPROD j2) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD j2) (y1 :: COPROD k) (y2 :: COPROD j2). Coprod (f :.: g) x1 x2 -> Coprod (f :.: g) y1 y2 -> Coprod (f :.: g) (x1 ** y1) (x2 ** y2) Source Github #

(HasCoproducts k, Ob r) => MonoidalProfunctor (Coprod (Rep (Constant r)) :: COPROD k -> COPROD k -> Type) Source Github # 
Instance details

Defined in Proarrow.Monoid

Methods

one :: Coprod (Rep (Constant r)) (Unit :: COPROD k) (Unit :: COPROD k) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod (Rep (Constant r)) x1 x2 -> Coprod (Rep (Constant r)) y1 y2 -> Coprod (Rep (Constant r)) (x1 ** y1) (x2 ** y2) Source Github #

HasCoproducts k => MonoidalProfunctor (Coprod (Cont r) :: COPROD k -> COPROD k -> Type) Source Github # 
Instance details

Defined in Proarrow.Promonad.Cont

Methods

one :: Coprod (Cont r) (Unit :: COPROD k) (Unit :: COPROD k) Source Github #

(**) :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod (Cont r) x1 x2 -> Coprod (Cont r) y1 y2 -> Coprod (Cont r) (x1 ** y1) (x2 ** y2) Source Github #

(HasCoproducts k, cat ~ Hom k) => MonoidalProfunctor (Coprod cat :: COPROD k -> COPROD k -> Type) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

one :: Coprod cat (Unit :: COPROD k) (Unit :: COPROD k) Source Github #

(**) :: 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 Github #

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

Defined in Proarrow.Colimit.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 Github #

lmap :: forall (c :: COPROD k) (a :: COPROD k) (b :: COPROD j). (c ~> a) -> Coprod p a b -> Coprod p c b Source Github #

rmap :: forall (b :: COPROD j) (d :: COPROD j) (a :: COPROD k). (b ~> d) -> Coprod p a b -> Coprod p a d Source Github #

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

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

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

index :: forall (a :: COPROD k) (b :: COPROD j). Coprod p a b -> a ~> (Coprod p % b) Source Github #

tabulate :: forall (b :: COPROD j) (a :: COPROD k). Ob b => (a ~> (Coprod p % b)) -> Coprod p a b Source Github #

repMap :: forall (a :: COPROD j) (b :: COPROD j). (a ~> b) -> (Coprod p % a) ~> (Coprod p % b) Source Github #

repUniv :: forall (a :: COPROD j). Ob a => Coprod p (Coprod p % a) a Source Github #

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

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

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

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

type (Coprod p :: COPROD k -> COPROD j -> Type) % ('COPR a :: COPROD j) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type (Coprod p :: COPROD k -> COPROD j -> Type) % ('COPR a :: COPROD j) = 'COPR (p % a)

(++) :: forall {k1} {k2} p (a :: k2) (b :: k1) (c :: k2) (d :: k1). MonoidalProfunctor (Coprod p) => p a b -> p c d -> p (a || c) (b || d) Source Github #

leftUnitorCoprod :: forall {k} (a :: k). (HasCoproducts k, Ob a) => ((InitialObject :: k) || a) ~> a Source Github #

leftUnitorCoprodInv :: forall {k} (a :: k). (HasCoproducts k, Ob a) => a ~> ((InitialObject :: k) || a) Source Github #

rightUnitorCoprod :: forall {k} (a :: k). (HasCoproducts k, Ob a) => (a || (InitialObject :: k)) ~> a Source Github #

rightUnitorCoprodInv :: forall {k} (a :: k). (HasCoproducts k, Ob a) => a ~> (a || (InitialObject :: k)) Source Github #

associatorCoprod :: forall {k} (a :: k) (b :: k) (c :: k). (HasCoproducts k, Ob a, Ob b, Ob c) => ((a || b) || c) ~> (a || (b || c)) Source Github #

associatorCoprodInv :: forall {k} (a :: k) (b :: k) (c :: k). (HasCoproducts k, Ob a, Ob b, Ob c) => (a || (b || c)) ~> ((a || b) || c) Source Github #

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

Constructors

Uncoprod :: forall {j} {k} (p :: COPROD j +-> COPROD k) (a :: k) (b :: j). p ('COPR a) ('COPR b) -> Uncoprod p a b 

Instances

Instances details
(Profunctor p, CategoryOf j, CategoryOf k) => Profunctor (Uncoprod p :: k -> j -> Type) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

dimap :: forall (c :: k) (a :: k) (b :: j) (d :: j). (c ~> a) -> (b ~> d) -> Uncoprod p a b -> Uncoprod p c d Source Github #

lmap :: forall (c :: k) (a :: k) (b :: j). (c ~> a) -> Uncoprod p a b -> Uncoprod p c b Source Github #

rmap :: forall (b :: j) (d :: j) (a :: k). (b ~> d) -> Uncoprod p a b -> Uncoprod p a d Source Github #

(\\) :: forall (a :: k) (b :: j) r. ((Ob a, Ob b) => r) -> Uncoprod p a b -> r Source Github #

data family (a :: k) + (b :: k) :: k Source Github #

Instances

Instances details
(Ob a, Ob b, Elem HasBinaryCoproducts cs) => IsFreeOb (a + b :: FREE cs p) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

Methods

withLowerOb :: forall {k} (f :: j +-> k) r. (Representable f, All cs k) => (Ob (Lower f (a + b)) => r) -> r Source Github #

type Lower (f :: j +-> k) (a + b :: FREE cs p) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

type Lower (f :: j +-> k) (a + b :: FREE cs p) = Lower f a || Lower f b

class (a && b) ~ (a || b) => CheckBiproduct (a :: k) (b :: k) Source Github #

Instances

Instances details
(a && b) ~ (a || b) => CheckBiproduct (a :: k) (b :: k) Source Github # 
Instance details

Defined in Proarrow.Colimit.BinaryCoproduct

class (HasBinaryCoproducts k, HasBinaryProducts k, forall (a :: k) (b :: k). (Ob a, Ob b) => CheckBiproduct a b) => HasBiproducts k where Source Github #

Minimal complete definition

Nothing

Methods

sum :: forall (a :: k) (b :: k). (a ~> b) -> (a ~> b) -> a ~> b Source Github #

Instances

Instances details
HasBiproducts KIND Source Github # 
Instance details

Defined in Proarrow.Category.Instance.CatProf

Methods

sum :: forall (a :: KIND) (b :: KIND). (a ~> b) -> (a ~> b) -> a ~> b Source Github #

HasBiproducts FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

sum :: forall (a :: FINREL) (b :: FINREL). (a ~> b) -> (a ~> b) -> a ~> b Source Github #

Num a => HasBiproducts (MatK a) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Mat

Methods

sum :: forall (a0 :: MatK a) (b :: MatK a). (a0 ~> b) -> (a0 ~> b) -> a0 ~> b Source Github #

(HasPullbacks k, HasBinaryCoproducts k) => HasBiproducts (SPAN k) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.Span

Methods

sum :: forall (a :: SPAN k) (b :: SPAN k). (a ~> b) -> (a ~> b) -> a ~> b Source Github #

Orphan instances

(HasBinaryCoproducts j, Corepresentable p, Corepresentable q) => Corepresentable (p :*: q :: k -> j -> Type) Source Github # 
Instance details

Methods

coindex :: forall (a :: k) (b :: j). (p :*: q) a b -> ((p :*: q) %% a) ~> b Source Github #

cotabulate :: forall (a :: k) (b :: j). Ob a => (((p :*: q) %% a) ~> b) -> (p :*: q) a b Source Github #

corepMap :: forall (a :: k) (b :: k). (a ~> b) -> ((p :*: q) %% a) ~> ((p :*: q) %% b) Source Github #

corepUniv :: forall (a :: k). Ob a => (p :*: q) a ((p :*: q) %% a) Source Github #

HasBinaryCoproducts k => Corepresentable (Rep (Diag :: k +-> (k, k)) :: (k, k) -> k -> Type) Source Github #

The left adjoint to the diagonal functor.

Instance details

Methods

coindex :: forall (a :: (k, k)) (b :: k). Rep (Diag :: k +-> (k, k)) a b -> (Rep (Diag :: k +-> (k, k)) %% a) ~> b Source Github #

cotabulate :: forall (a :: (k, k)) (b :: k). Ob a => ((Rep (Diag :: k +-> (k, k)) %% a) ~> b) -> Rep (Diag :: k +-> (k, k)) a b Source Github #

corepMap :: forall (a :: (k, k)) (b :: (k, k)). (a ~> b) -> (Rep (Diag :: k +-> (k, k)) %% a) ~> (Rep (Diag :: k +-> (k, k)) %% b) Source Github #

corepUniv :: forall (a :: (k, k)). Ob a => Rep (Diag :: k +-> (k, k)) a (Rep (Diag :: k +-> (k, k)) %% a) Source Github #

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

Methods

withObProd :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) r. (Ob a, Ob b) => (Ob (a && b) => r) -> r Source Github #

fst :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => (a && b) ~> a Source Github #

snd :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => (a && b) ~> b Source Github #

(&&&) :: forall (a :: OPPOSITE k) (x :: OPPOSITE k) (y :: OPPOSITE k). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Github #

(***) :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (x :: OPPOSITE k) (y :: OPPOSITE k). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Github #