Safe Haskell | None |
---|---|

Language | Haskell2010 |

`Attenuation`

s for `Profunctor`

s.

## Synopsis

- lcontra :: (Profunctor p, Representational0 p) => Variance (p b x) (p a x) a b
- rco :: (Profunctor p, Representational1 p) => Variance (p x a) (p x b) a b
- profunctoriality :: forall p a b c d. (Representational0 p, Representational1 p, Profunctor p) => (Attenuable a c, Attenuable b d) :- Attenuable (p c b) (p a d)

# Profunctor Attenuations

lcontra :: (Profunctor p, Representational0 p) => Variance (p b x) (p a x) a b Source #

Lift an `Attenuation`

contravariantly over the left of a `Profunctor`

.

Similarly to the use of `Contravariant`

in
`contra`

, we use `Profunctor`

to guarantee
contravariance in the appropriate parameter.

rco :: (Profunctor p, Representational1 p) => Variance (p x a) (p x b) a b Source #

Lift an `Attenuation`

covariantly over the right of a `Profunctor`

.

Similarly to the use of `Functor`

in `co`

, we use
`Profunctor`

to guarantee covariance in the appropriate parameter.

As with `sndco`

, this functions the same as
`co`

, but the needed `Functor`

instance might not be
available in polymorphic contexts.

profunctoriality :: forall p a b c d. (Representational0 p, Representational1 p, Profunctor p) => (Attenuable a c, Attenuable b d) :- Attenuable (p c b) (p a d) Source #

`Profunctor`

s map attenuations profunctorially.