profunctors-4.0.1: Profunctors

Portability | Type-Families
Stability | provisional
Maintainer | Edward Kmett <ekmett@gmail.com>
Safe Haskell | Trustworthy

Data.Profunctor.Rep

Contents

- Representable Profunctors
- Corepresentable Profunctors

Description

Synopsis

- class (Functor (Rep p), Profunctor p) => Representable p where
  - type Rep p :: * -> *
  - tabulate :: (d -> Rep p c) -> p d c
  - rep :: p d c -> d -> Rep p c
- tabulated :: (Representable p, Representable q) => Iso (d -> Rep p c) (d' -> Rep q c') (p d c) (q d' c')
- class (Functor (Corep p), Profunctor p) => Corepresentable p where
  - type Corep p :: * -> *
  - cotabulate :: (Corep p d -> c) -> p d c
  - corep :: p d c -> Corep p d -> c
- cotabulated :: (Corepresentable p, Corepresentable q) => Iso (Corep p d -> c) (Corep q d' -> c') (p d c) (q d' c')

# Representable Profunctors

class (Functor (Rep p), Profunctor p) => Representable p where Source

A `Profunctor` `p` is `Representable` if there exists a `Functor` `f` such that `p d c` is isomorphic to `d -> f c`.

Associated Types

type Rep p :: * -> *Source

Methods

tabulate :: (d -> Rep p c) -> p d cSource

rep :: p d c -> d -> Rep p cSource

Instances

Representable (->) |
(Monad m, Functor m) => Representable (Kleisli m) |
Functor f => Representable (UpStar f) |
(Representable p, Representable q) => Representable (Procompose p q) | The composition of two `Representable` `Profunctor`s is `Representable` by the composition of their representations.

tabulated :: (Representable p, Representable q) => Iso (d -> Rep p c) (d' -> Rep q c') (p d c) (q d' c')Source

`tabulate` and `rep` form two halves of an isomorphism.

This can be used with the combinators from the `lens` package.

    tabulated :: Representable p => Iso' (d -> Rep p c) (p d c)

# Corepresentable Profunctors

class (Functor (Corep p), Profunctor p) => Corepresentable p where Source

A `Profunctor` `p` is `Corepresentable` if there exists a `Functor` `f` such that `p d c` is isomorphic to `f d -> c`.

Associated Types

type Corep p :: * -> *Source

Methods

cotabulate :: (Corep p d -> c) -> p d cSource

corep :: p d c -> Corep p d -> cSource

Instances

Corepresentable (->) |
Functor w => Corepresentable (Cokleisli w) |
Corepresentable (Tagged *) |
Functor f => Corepresentable (DownStar f) |
(Corepresentable p, Corepresentable q) => Corepresentable (Procompose p q) |

cotabulated :: (Corepresentable p, Corepresentable q) => Iso (Corep p d -> c) (Corep q d' -> c') (p d c) (q d' c')Source

`cotabulate` and `corep` form two halves of an isomorphism.

This can be used with the combinators from the `lens` package.

    tabulated :: Corep f p => Iso' (f d -> c) (p d c)