Copyright | (c) Edward Kmett 2011-2014 |
---|---|
License | BSD3 |
Maintainer | ekmett@gmail.com |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Representable contravariant endofunctors over the category of Haskell
types are isomorphic to
(_ -> r)
and resemble mappings to a
fixed range.
Synopsis
- class Contravariant f => Representable f where
- tabulated :: ( Representable f, Representable g, Profunctor p, Functor h) => p (f a) (h (g b)) -> p (a -> Rep f) (h (b -> Rep g))
- contramapRep :: Representable f => (a -> b) -> f b -> f a
Representable Contravariant Functors
class Contravariant f => Representable f where Source #
A
Contravariant
functor
f
is
Representable
if
tabulate
and
index
witness an isomorphism to
(_ -> Rep f)
.
tabulate
.index
≡ idindex
.tabulate
≡ id
tabulate :: (a -> Rep f) -> f a Source #
index :: f a -> a -> Rep f Source #
contramapWithRep :: (b -> Either a ( Rep f)) -> f a -> f b Source #
contramapWithRep
f p ≡tabulate
$either
(index
p)id
. f
Instances
Representable Predicate Source # | |
Representable ( U1 :: Type -> Type ) Source # | |
Representable ( Op r) Source # | |
Representable ( Proxy :: Type -> Type ) Source # | |
( Representable f, Representable g) => Representable (f :*: g) Source # | |
( Representable f, Representable g) => Representable ( Product f g) Source # | |
tabulated :: ( Representable f, Representable g, Profunctor p, Functor h) => p (f a) (h (g b)) -> p (a -> Rep f) (h (b -> Rep g)) Source #
tabulate
and
index
form two halves of an isomorphism.
This can be used with the combinators from the
lens
package.
tabulated
::Representable
f =>Iso'
(a ->Rep
f) (f a)
Default definitions
contramapRep :: Representable f => (a -> b) -> f b -> f a Source #