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

Proarrow.Profunctor.Ran

Documentation

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

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

Constructors

Ran 

Fields

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

Instances

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

Defined in Proarrow.Profunctor.Ran

Methods

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

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

Profunctor j2 => Adjunction (Star ((:.:) j2 :: PRO j1 k -> i -> k -> Type) :: (i -> k -> Type) -> PRO j1 k -> Type) (Star (Ran ('OP j2) :: PRO i k -> j1 -> k -> Type) :: (j1 -> k -> Type) -> PRO i k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Ran

Methods

unit :: forall (a :: PRO j1 k). Ob a => (Star (Ran ('OP j2) :: PRO i k -> j1 -> k -> Type) :.: Star ((:.:) j2 :: PRO j1 k -> i -> k -> Type)) a a Source Comments #

counit :: (Star ((:.:) j2 :: PRO j1 k -> i -> k -> Type) :.: Star (Ran ('OP j2) :: PRO i k -> j1 -> k -> Type)) :~> ((~>) :: CAT (i -> k -> Type)) Source Comments #

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

Defined in Proarrow.Profunctor.Ran

Methods

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

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

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

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