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

Proarrow.Profunctor.Rift

Documentation

type (<|) (p :: PRO j i) (j1 :: PRO k i) = Rift ('OP j1) p Source Comments #

data Rift (j1 :: OPPOSITE (PRO k i)) (p :: PRO j i) (a :: j) (b :: k) where Source Comments #

Constructors

Rift 

Fields

  • :: forall {j} {k} {i} (a :: j) (b :: k) (j2 :: PRO k i) (p :: PRO j i). (Ob a, Ob b)
     
  • => { getRift :: forall (x :: i). Ob x => j2 b x -> p a x
     
  •    } -> Rift ('OP j2) p a b
     

Instances

Instances details
(Profunctor p, Profunctor j2) => Profunctor (Rift ('OP j2) p :: j1 -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Rift

Methods

dimap :: forall (c :: j1) (a :: j1) (b :: k) (d :: k). (c ~> a) -> (b ~> d) -> Rift ('OP j2) p a b -> Rift ('OP j2) p c d Source Comments #

(\\) :: forall (a :: j1) (b :: k) r. ((Ob a, Ob b) => r) -> Rift ('OP j2) p a b -> r 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 #

Profunctor j => Adjunction (Star (Precompose j :: PRO i2 k -> i2 -> i1 -> Type) :: (i2 -> i1 -> Type) -> PRO i2 k -> Type) (Star (Rift ('OP j) :: PRO i2 i1 -> i2 -> k -> Type) :: (i2 -> k -> Type) -> PRO i2 i1 -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Rift

Methods

unit :: forall (a :: PRO i2 k). Ob a => (Star (Rift ('OP j) :: PRO i2 i1 -> i2 -> k -> Type) :.: Star (Precompose j :: PRO i2 k -> i2 -> i1 -> Type)) a a Source Comments #

counit :: (Star (Precompose j :: PRO i2 k -> i2 -> i1 -> Type) :.: Star (Rift ('OP j) :: PRO i2 i1 -> i2 -> k -> Type)) :~> ((~>) :: CAT (i2 -> i1 -> Type)) Source Comments #

Profunctor j2 => Functor (Rift ('OP j2) :: PRO j1 i -> j1 -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Rift

Methods

map :: forall (a :: PRO j1 i) (b :: PRO j1 i). (a ~> b) -> Rift ('OP j2) a ~> Rift ('OP j2) b Source Comments #

runRift :: forall {k} {i} {j1} j2 (b :: k) (x :: i) p (a :: j1). Profunctor j2 => j2 b x -> Rift ('OP j2) p a b -> p a x Source Comments #

newtype Precompose (j1 :: PRO j k) (p :: PRO i j) (a :: i) (b :: k) Source Comments #

Constructors

Precompose 

Fields

Instances

Instances details
(Profunctor j3, Profunctor p) => Profunctor (Precompose j3 p :: j2 -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Rift

Methods

dimap :: forall (c :: j2) (a :: j2) (b :: k) (d :: k). (c ~> a) -> (b ~> d) -> Precompose j3 p a b -> Precompose j3 p c d Source Comments #

(\\) :: forall (a :: j2) (b :: k) r. ((Ob a, Ob b) => r) -> Precompose j3 p a b -> r Source Comments #

Profunctor j => Adjunction (Star (Precompose j :: PRO i2 k -> i2 -> i1 -> Type) :: (i2 -> i1 -> Type) -> PRO i2 k -> Type) (Star (Rift ('OP j) :: PRO i2 i1 -> i2 -> k -> Type) :: (i2 -> k -> Type) -> PRO i2 i1 -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Rift

Methods

unit :: forall (a :: PRO i2 k). Ob a => (Star (Rift ('OP j) :: PRO i2 i1 -> i2 -> k -> Type) :.: Star (Precompose j :: PRO i2 k -> i2 -> i1 -> Type)) a a Source Comments #

counit :: (Star (Precompose j :: PRO i2 k -> i2 -> i1 -> Type) :.: Star (Rift ('OP j) :: PRO i2 i1 -> i2 -> k -> Type)) :~> ((~>) :: CAT (i2 -> i1 -> Type)) Source Comments #

Profunctor j2 => Functor (Precompose j2 :: PRO i j1 -> i -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Rift

Methods

map :: forall (a :: PRO i j1) (b :: PRO i j1). (a ~> b) -> Precompose j2 a ~> Precompose j2 b Source Comments #

riftCompose :: forall {k} {j1} {i1} {j2} (i2 :: PRO k j1) (j3 :: PRO j1 i1) (p :: PRO j2 i1). (Profunctor i2, Profunctor j3, Profunctor p) => Rift ('OP i2) (Rift ('OP j3) p) ~> Rift ('OP (i2 :.: j3)) p Source Comments #

riftComposeInv :: forall {k1} {k2} {i1} {j1} (i2 :: PRO k1 k2) (j2 :: PRO k2 i1) (p :: PRO j1 i1). (Profunctor i2, Profunctor j2, Profunctor p) => Rift ('OP (i2 :.: j2)) p ~> Rift ('OP i2) (Rift ('OP j2) p) Source Comments #