Portability | non-portable |
---|---|
Stability | provisional |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Safe Haskell | Safe-Inferred |
- class (Contravariant f, Functor f) => Gettable f
- coerce :: (Contravariant f, Functor f) => f a -> f b
- noEffect :: (Contravariant f, Applicative f) => f a
- newtype Accessor r a = Accessor {
- runAccessor :: r
Internal Classes
class (Contravariant f, Functor f) => Gettable f Source
This class is provided mostly for backwards compatibility with lens 3.8, but it can also shorten type signatures.
(Contravariant f, Functor f) => Gettable f |
Getters
coerce :: (Contravariant f, Functor f) => f a -> f bSource
This Generalizes Const
so we can apply simple Applicative
transformations to it and so we can get nicer error messages.
A Functor
you can coerce
ignores its argument, which it carries solely as a
phantom type parameter.
By the Functor
and Contravariant
laws, an instance of Gettable
will necessarily satisfy:
id
=fmap
f =coerce
=contramap
g
noEffect :: (Contravariant f, Applicative f) => f aSource
The mempty
equivalent for a Gettable
Applicative
Functor
.