| Copyright | (C) 2014-2015 Edward Kmett |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
| Stability | provisional |
| Portability | Rank2Types |
| Safe Haskell | Safe |
| Language | Haskell2010 |
Data.Profunctor.Strong
Contents
Description
Synopsis
- class Profunctor p => Strong p where
- uncurry' :: Strong p => p a (b -> c) -> p (a, b) c
- strong :: Strong p => (a -> b -> c) -> p a b -> p a c
- newtype Tambara p a b = Tambara {
- runTambara :: forall c. p (a, c) (b, c)
- tambara :: Strong p => (p :-> q) -> p :-> Tambara q
- untambara :: Profunctor q => (p :-> Tambara q) -> p :-> q
- data Pastro p a b where
- pastro :: Strong q => (p :-> q) -> Pastro p :-> q
- unpastro :: (Pastro p :-> q) -> p :-> q
- class Profunctor p => Costrong p where
- data Cotambara q a b where
- cotambara :: Costrong p => (p :-> q) -> p :-> Cotambara q
- uncotambara :: Profunctor q => (p :-> Cotambara q) -> p :-> q
- newtype Copastro p a b = Copastro {
- runCopastro :: forall r. Costrong r => (forall x y. p x y -> r x y) -> r a b
Strength
class Profunctor p => Strong p where #
Generalizing Star of a strong Functor
Note: Every Functor in Haskell is strong with respect to (,).
This describes profunctor strength with respect to the product structure of Hask.
Methods
Instances
Tambara cofreely makes any Profunctor Strong.
Constructors
| Tambara | |
Fields
| |
Instances
Pastro -| Tambara
Pastro p ~ exists z. Costar ((,)z)ProcomposepProcomposeStar ((,)z)
Pastro freely makes any Profunctor Strong.
Instances
| ProfunctorMonad Pastro # | |
| ProfunctorAdjunction Pastro Tambara # | |
| Profunctor (Pastro p) # | |
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 # (#.) :: forall a b c q. Coercible c b => q b c -> Pastro p a b -> Pastro p a c # (.#) :: forall a b c q. Coercible b a => Pastro p b c -> q a b -> Pastro p a c # | |
| Strong (Pastro p) # | |
| ProfunctorFunctor Pastro # | |
| Functor (Pastro p a) # | |
Costrength
class Profunctor p => Costrong p where #
Methods
Instances
Cotambara cofreely constructs costrength
Instances
| ProfunctorComonad Cotambara # | |
Defined in Data.Profunctor.Strong Methods proextract :: forall (p :: Type -> Type -> Type). Profunctor p => Cotambara p :-> p # produplicate :: forall (p :: Type -> Type -> Type). Profunctor p => Cotambara p :-> Cotambara (Cotambara p) # | |
| ProfunctorAdjunction Copastro Cotambara # | |
| Profunctor (Cotambara p) # | |
Defined in Data.Profunctor.Strong Methods dimap :: (a -> b) -> (c -> d) -> Cotambara p b c -> Cotambara p a d # lmap :: (a -> b) -> Cotambara p b c -> Cotambara p a c # rmap :: (b -> c) -> Cotambara p a b -> Cotambara p a c # (#.) :: forall a b c q. Coercible c b => q b c -> Cotambara p a b -> Cotambara p a c # (.#) :: forall a b c q. Coercible b a => Cotambara p b c -> q a b -> Cotambara p a c # | |
| Costrong (Cotambara p) # | |
| ProfunctorFunctor Cotambara # | |
| Functor (Cotambara p a) # | |
uncotambara :: Profunctor q => (p :-> Cotambara q) -> p :-> q #
Copastro -| Cotambara
Copastro freely constructs costrength
Constructors
| Copastro | |
Fields
| |
Instances
| ProfunctorMonad Copastro # | |
| ProfunctorAdjunction Copastro Cotambara # | |
| Profunctor (Copastro p) # | |
Defined in Data.Profunctor.Strong Methods dimap :: (a -> b) -> (c -> d) -> Copastro p b c -> Copastro p a d # lmap :: (a -> b) -> Copastro p b c -> Copastro p a c # rmap :: (b -> c) -> Copastro p a b -> Copastro p a c # (#.) :: forall a b c q. Coercible c b => q b c -> Copastro p a b -> Copastro p a c # (.#) :: forall a b c q. Coercible b a => Copastro p b c -> q a b -> Copastro p a c # | |
| Costrong (Copastro p) # | |
| ProfunctorFunctor Copastro # | |
| Functor (Copastro p a) # | |