profunctor-arrows-0.0.0.2: Profunctor arrows

Safe HaskellSafe
LanguageHaskell2010

Data.Profunctor.Arrow.Strong

Synopsis

Documentation

data Pastro (p :: Type -> Type -> Type) a b where #

Pastro -| Tambara

Pastro p ~ exists z. Costar ((,)z) Procompose p Procompose Star ((,)z)

Pastro freely makes any Profunctor Strong.

Constructors

Pastro :: forall (p :: Type -> Type -> Type) a b y z x. ((y, z) -> b) -> p x y -> (a -> (x, z)) -> Pastro p a b 
Instances
ProfunctorFunctor Pastro 
Instance details

Defined in Data.Profunctor.Strong

Methods

promap :: Profunctor p => (p :-> q) -> Pastro p :-> Pastro q #

ProfunctorMonad Pastro 
Instance details

Defined in Data.Profunctor.Strong

ProfunctorAdjunction Pastro Tambara 
Instance details

Defined in Data.Profunctor.Strong

Methods

unit :: Profunctor p => p :-> Tambara (Pastro p) #

counit :: Profunctor p => Pastro (Tambara p) :-> p #

Strong (Pastro p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

first' :: Pastro p a b -> Pastro p (a, c) (b, c) #

second' :: Pastro p a b -> Pastro p (c, a) (c, b) #

Profunctor (Pastro p) 
Instance details

Defined in Data.Profunctor.Strong

Methods

dimap :: (a -> b) -> (c -> d) -> Pastro p b c -> Pastro p a d #

lmap :: (a -> b) -> Pastro p b c -> Pastro p a c #

rmap :: (b -> c) -> Pastro p a b -> Pastro p a c #

(#.) :: Coercible c b => q b c -> Pastro p a b -> Pastro p a c #

(.#) :: Coercible b a => Pastro p b c -> q a b -> Pastro p a c #

type StrongA p = Free (Pastro p) Source #

liftStrong :: p a b -> StrongA p a b Source #

TODO: Document

foldStrong :: Category q => Strong q => (p :-> q) -> StrongA p a b -> q a b Source #

TODO: Document

runStrongT :: Strong q => (p :-> q) -> Pastro p a b -> q a b Source #

TODO: Document

runStrongM :: Monad m => (forall x y. p x y -> x -> m y) -> StrongA p a b -> a -> m b Source #

TODO: Document