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

Proarrow.Category.Opposite

Documentation

newtype OPPOSITE k Source Comments #

Constructors

OP k 

Instances

Instances details
CategoryOf k => Profunctor (Hom :: UNIT -> (OPPOSITE k, k) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Limit

Methods

dimap :: forall (c :: UNIT) (a :: UNIT) (b :: (OPPOSITE k, k)) (d :: (OPPOSITE k, k)). (c ~> a) -> (b ~> d) -> Hom a b -> Hom c d Source Comments #

(\\) :: forall (a :: UNIT) (b :: (OPPOSITE k, k)) r. ((Ob a, Ob b) => r) -> Hom a b -> r Source Comments #

Closed k => Profunctor (ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

Methods

dimap :: forall (c :: k) (a :: k) (b :: (OPPOSITE k, k)) (d :: (OPPOSITE k, k)). (c ~> a) -> (b ~> d) -> ExponentialFunctor a b -> ExponentialFunctor c d Source Comments #

(\\) :: forall (a :: k) (b :: (OPPOSITE k, k)) r. ((Ob a, Ob b) => r) -> ExponentialFunctor a b -> r Source Comments #

Closed k => Representable (ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

Methods

index :: forall (a :: k) (b :: (OPPOSITE k, k)). ExponentialFunctor a b -> a ~> ((ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % b) Source Comments #

tabulate :: forall (b :: (OPPOSITE k, k)) (a :: k). Ob b => (a ~> ((ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % b)) -> ExponentialFunctor a b Source Comments #

repMap :: forall (a :: (OPPOSITE k, k)) (b :: (OPPOSITE k, k)). (a ~> b) -> ((ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % a) ~> ((ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % b) Source Comments #

CategoryOf k => HasLimits (Hom :: UNIT -> (OPPOSITE k, k) -> Type) Type Source Comments # 
Instance details

Defined in Proarrow.Category.Limit

Methods

limit :: forall (d :: PRO Type (OPPOSITE k, k)). Representable d => Limit (Hom :: UNIT -> (OPPOSITE k, k) -> Type) d :~> (d <| (Hom :: UNIT -> (OPPOSITE k, k) -> Type)) Source Comments #

limitInv :: forall (d :: PRO Type (OPPOSITE k, k)). Representable d => (d <| (Hom :: UNIT -> (OPPOSITE k, k) -> Type)) :~> Limit (Hom :: UNIT -> (OPPOSITE k, k) -> Type) d Source Comments #

Monoidal k => Monoidal (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Opposite

type Unit = 'OP (Unit :: k)

Methods

par :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k) (d :: OPPOSITE k). (a ~> b) -> (c ~> d) -> (a ** c) ~> (b ** d) Source Comments #

leftUnitor :: forall (a :: OPPOSITE k). Obj a -> ((Unit :: OPPOSITE k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: OPPOSITE k). Obj a -> a ~> ((Unit :: OPPOSITE k) ** a) Source Comments #

rightUnitor :: forall (a :: OPPOSITE k). Obj a -> (a ** (Unit :: OPPOSITE k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: OPPOSITE k). Obj a -> a ~> (a ** (Unit :: OPPOSITE k)) Source Comments #

associator :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). Obj a -> Obj b -> Obj c -> ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). Obj a -> Obj b -> Obj c -> (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

SymMonoidal k => SymMonoidal (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

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

CategoryOf k => CategoryOf (OPPOSITE k) Source Comments #

The opposite category of the category of k.

Instance details

Defined in Proarrow.Category.Opposite

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Category.Opposite

type (~>) = Op ((~>) :: CAT k)
HasBinaryProducts k => HasBinaryCoproducts (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

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

rgt' :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). Obj a -> Obj 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 #

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

Defined in Proarrow.Category.Opposite

Methods

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

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

(&&&) :: forall (a :: OPPOSITE k) (x :: OPPOSITE k) (y :: OPPOSITE k). (a ~> x) -> (a ~> y) -> a ~> (x && y) 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 #

HasTerminalObject k => HasInitialObject (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Associated Types

type InitialObject 
Instance details

Defined in Proarrow.Category.Opposite

Methods

initiate' :: forall (a :: OPPOSITE k). Obj a -> (InitialObject :: OPPOSITE k) ~> a Source Comments #

HasInitialObject k => HasTerminalObject (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Associated Types

type TerminalObject 
Instance details

Defined in Proarrow.Category.Opposite

Methods

terminate' :: forall (a :: OPPOSITE k). Obj a -> a ~> (TerminalObject :: OPPOSITE k) Source Comments #

Profunctor p => Functor (Op p a :: OPPOSITE j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

map :: forall (a0 :: OPPOSITE j) (b :: OPPOSITE j). (a0 ~> b) -> Op p a a0 ~> Op p a b Source Comments #

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

Defined in Proarrow.Category.Opposite

Methods

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

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

Functor (Ran :: OPPOSITE (PRO i j) -> PRO i k -> j -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Ran

Methods

map :: forall (a :: OPPOSITE (PRO i j)) (b :: OPPOSITE (PRO i j)). (a ~> b) -> (Ran a :: PRO i k -> j -> k -> Type) ~> (Ran b :: PRO i k -> j -> k -> Type) Source Comments #

Functor (Rift :: OPPOSITE (PRO k i) -> PRO j i -> j -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Rift

Methods

map :: forall (a :: OPPOSITE (PRO k i)) (b :: OPPOSITE (PRO k i)). (a ~> b) -> (Rift a :: PRO j i -> j -> k -> Type) ~> (Rift b :: PRO j i -> j -> k -> Type) Source Comments #

Promonad c => Promonad (Op c :: OPPOSITE k -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

id :: forall (a :: OPPOSITE k). Ob a => Op c a a Source Comments #

(.) :: forall (b :: OPPOSITE k) (c0 :: OPPOSITE k) (a :: OPPOSITE k). Op c b c0 -> Op c a b -> Op c a c0 Source Comments #

type UN ('OP :: j -> OPPOSITE j) ('OP k :: OPPOSITE j) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type UN ('OP :: j -> OPPOSITE j) ('OP k :: OPPOSITE j) = k
type Limit (Hom :: UNIT -> (OPPOSITE k, k) -> Type) (d :: PRO Type (OPPOSITE k, k)) Source Comments # 
Instance details

Defined in Proarrow.Category.Limit

type Limit (Hom :: UNIT -> (OPPOSITE k, k) -> Type) (d :: PRO Type (OPPOSITE k, k)) = EndLimit d
type Unit Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

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

Defined in Proarrow.Category.Opposite

type (~>) = Op ((~>) :: CAT k)
type InitialObject Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type TerminalObject Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type Ob (a :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

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

Defined in Proarrow.Category.Opposite

type (a :: OPPOSITE k) ** (b :: OPPOSITE k) = 'OP (UN ('OP :: k -> OPPOSITE k) a ** UN ('OP :: k -> OPPOSITE k) b)
type ('OP a :: OPPOSITE k) || ('OP b :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type ('OP a :: OPPOSITE k) || ('OP b :: OPPOSITE k) = 'OP (a && b)
type ('OP a :: OPPOSITE k) && ('OP b :: OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

type ('OP a :: OPPOSITE k) && ('OP b :: OPPOSITE k) = 'OP (a || b)
type (ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % ('('OP a, b) :: (OPPOSITE k, k)) Source Comments # 
Instance details

Defined in Proarrow.Object.Exponential

type (ExponentialFunctor :: k -> (OPPOSITE k, k) -> Type) % ('('OP a, b) :: (OPPOSITE k, k)) = a ~~> b

data Op (c :: PRO j k) (a :: OPPOSITE k) (b :: OPPOSITE j) where Source Comments #

Constructors

Op 

Fields

  • :: forall {j} {k} (c :: PRO j k) (b1 :: j) (a1 :: k). { getOp :: c b1 a1
     
  •    } -> Op c ('OP a1) ('OP b1)
     

Instances

Instances details
Profunctor p => Functor (Op p a :: OPPOSITE j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

map :: forall (a0 :: OPPOSITE j) (b :: OPPOSITE j). (a0 ~> b) -> Op p a a0 ~> Op p a b Source Comments #

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

Defined in Proarrow.Category.Opposite

Methods

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

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

Promonad c => Promonad (Op c :: OPPOSITE k -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

id :: forall (a :: OPPOSITE k). Ob a => Op c a a Source Comments #

(.) :: forall (b :: OPPOSITE k) (c0 :: OPPOSITE k) (a :: OPPOSITE k). Op c b c0 -> Op c a b -> Op c a c0 Source Comments #