| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Instance.Duploid
Documentation
data DUPLOID (adj :: n +-> p) Source Github #
Instances
| (Adjunction adj, StrongMonoidalCorep adj) => Monoidal (DUPLOID adj) Source Github # | |||||
Defined in Proarrow.Category.Instance.Duploid Associated Types
Methods withOb2 :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: DUPLOID adj). Ob a => ((Unit :: DUPLOID adj) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: DUPLOID adj). Ob a => a ~> ((Unit :: DUPLOID adj) ** a) Source Github # rightUnitor :: forall (a :: DUPLOID adj). Ob a => (a ** (Unit :: DUPLOID adj)) ~> a Source Github # rightUnitorInv :: forall (a :: DUPLOID adj). Ob a => a ~> (a ** (Unit :: DUPLOID adj)) Source Github # associator :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) (c :: DUPLOID adj). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) (c :: DUPLOID adj). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||
| StrongSymMonAdj adj => SymMonoidal (DUPLOID adj) Source Github # | |||||
| Adjunction adj => CategoryOf (DUPLOID adj) Source Github # | |||||
Defined in Proarrow.Category.Instance.Duploid | |||||
| (HasBinaryCoproducts p, Adjunction adj) => HasBinaryCoproducts (DUPLOID adj) Source Github # | |||||
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 # | |||||
| (HasBinaryProducts n, Adjunction adj) => HasBinaryProducts (DUPLOID adj) Source Github # | |||||
Defined in Proarrow.Category.Instance.Duploid Methods withObProd :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) r. (Ob a, Ob b) => (Ob (a && b) => r) -> r Source Github # fst :: forall (a :: DUPLOID adj) (b :: DUPLOID adj). (Ob a, Ob b) => (a && b) ~> a Source Github # snd :: forall (a :: DUPLOID adj) (b :: DUPLOID adj). (Ob a, Ob b) => (a && b) ~> b Source Github # (&&&) :: forall (a :: DUPLOID adj) (x :: DUPLOID adj) (y :: DUPLOID adj). (a ~> x) -> (a ~> y) -> a ~> (x && y) 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 # | |||||
| Adjunction adj => Promonad (Duploid :: DUPLOID adj -> DUPLOID adj -> Type) Source Github # | ATTENTION: a duploid is not associative, so not really a promonad/category! | ||||
| (Adjunction adj, StrongMonoidalCorep adj) => MonoidalProfunctor (Duploid :: DUPLOID adj -> DUPLOID adj -> Type) Source Github # | |||||
Defined in Proarrow.Category.Instance.Duploid | |||||
| Adjunction adj => Profunctor (Duploid :: DUPLOID adj -> DUPLOID adj -> Type) Source Github # | |||||
Defined in Proarrow.Category.Instance.Duploid Methods dimap :: forall (c :: DUPLOID adj) (a :: DUPLOID adj) (b :: DUPLOID adj) (d :: DUPLOID adj). (c ~> a) -> (b ~> d) -> Duploid a b -> Duploid c d Source Github # lmap :: forall (c :: DUPLOID adj) (a :: DUPLOID adj) (b :: DUPLOID adj). (c ~> a) -> Duploid a b -> Duploid c b Source Github # rmap :: forall (b :: DUPLOID adj) (d :: DUPLOID adj) (a :: DUPLOID adj). (b ~> d) -> Duploid a b -> Duploid a d Source Github # (\\) :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) r. ((Ob a, Ob b) => r) -> Duploid a b -> r Source Github # | |||||
| type Unit Source Github # | |||||
Defined in Proarrow.Category.Instance.Duploid | |||||
| type (~>) Source Github # | |||||
| type Ob (x :: DUPLOID adj) Source Github # | |||||
Defined in Proarrow.Category.Instance.Duploid | |||||
| type (x :: DUPLOID adj) ** (y :: DUPLOID adj) Source Github # | |||||
| type (a :: DUPLOID adj) || (b :: DUPLOID adj) Source Github # | |||||
| type (a :: DUPLOID adj) && (b :: DUPLOID adj) Source Github # | |||||
data SDuploidObj (x :: DUPLOID adj) where Source Github #
data Duploid (x :: DUPLOID adj) (y :: DUPLOID adj) where Source Github #
Constructors
| Duploid :: forall {n} {p} {adj :: n +-> p} (x :: DUPLOID adj) (y :: DUPLOID adj). (Ob x, Ob y) => adj (Pos x) (Neg y) -> Duploid x y |
Instances
| Adjunction adj => Promonad (Duploid :: DUPLOID adj -> DUPLOID adj -> Type) Source Github # | ATTENTION: a duploid is not associative, so not really a promonad/category! |
| (Adjunction adj, StrongMonoidalCorep adj) => MonoidalProfunctor (Duploid :: DUPLOID adj -> DUPLOID adj -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Duploid | |
| Adjunction adj => Profunctor (Duploid :: DUPLOID adj -> DUPLOID adj -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Duploid Methods dimap :: forall (c :: DUPLOID adj) (a :: DUPLOID adj) (b :: DUPLOID adj) (d :: DUPLOID adj). (c ~> a) -> (b ~> d) -> Duploid a b -> Duploid c d Source Github # lmap :: forall (c :: DUPLOID adj) (a :: DUPLOID adj) (b :: DUPLOID adj). (c ~> a) -> Duploid a b -> Duploid c b Source Github # rmap :: forall (b :: DUPLOID adj) (d :: DUPLOID adj) (a :: DUPLOID adj). (b ~> d) -> Duploid a b -> Duploid a d Source Github # (\\) :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) r. ((Ob a, Ob b) => r) -> Duploid a b -> r Source Github # | |
(•) :: forall {j} {k} {adj :: j +-> k} (x :: DUPLOID adj) (y :: k) (z :: DUPLOID adj). Corepresentable adj => (('P y :: DUPLOID adj) ~> z) -> (x ~> ('P y :: DUPLOID adj)) -> x ~> z Source Github #
(◦) :: forall {j} {k} {adj :: j +-> k} (x :: DUPLOID adj) (y :: j) (z :: DUPLOID adj). Representable adj => (('N y :: DUPLOID adj) ~> z) -> (x ~> ('N y :: DUPLOID adj)) -> x ~> z Source Github #
fromThunkable :: forall {n} {k} {adj :: n +-> k} (x :: DUPLOID adj) (y :: DUPLOID adj). (Adjunction adj, Ob x, Ob y) => (Pos x ~> Pos y) -> x ~> y Source Github #
fromLinear :: forall {k} {p} {adj :: k +-> p} (x :: DUPLOID adj) (y :: DUPLOID adj). (Adjunction adj, Ob x, Ob y) => (Neg x ~> Neg y) -> x ~> y Source Github #
down :: forall {n} {p} {adj :: n +-> p} (x :: DUPLOID adj). (Adjunction adj, Ob x) => x ~> (Dn x :: DUPLOID adj) Source Github #
undown :: forall {n} {p} {adj :: n +-> p} (x :: DUPLOID adj). (Adjunction adj, Ob x) => (Dn x :: DUPLOID adj) ~> x Source Github #
mapDown :: forall {n} {p} {adj :: n +-> p} (x :: DUPLOID adj) (y :: DUPLOID adj). Adjunction adj => (x ~> y) -> (Dn x :: DUPLOID adj) ~> (Dn y :: DUPLOID adj) Source Github #
unup :: forall {n} {p} {adj :: n +-> p} (x :: DUPLOID adj). (Adjunction adj, Ob x) => (Up x :: DUPLOID adj) ~> x Source Github #
up :: forall {n} {p} {adj :: n +-> p} (x :: DUPLOID adj). (Adjunction adj, Ob x) => x ~> (Up x :: DUPLOID adj) Source Github #
mapUp :: forall {n} {p} {adj :: n +-> p} (x :: DUPLOID adj) (y :: DUPLOID adj). Adjunction adj => (x ~> y) -> (Up x :: DUPLOID adj) ~> (Up y :: DUPLOID adj) Source Github #
type StrongSymMonAdj (adj :: n +-> p) = (Adjunction adj, StrongMonoidalCorep adj, SymMonoidal p) Source Github #