|Maintainer||Edward Kmett <email@example.com>|
- type Equality s t a b = forall p f. p a (f b) -> p s (f t)
- type Equality' s a = Equality s s a a
- type AnEquality s t a b = Identical a (Mutator b) a (Mutator b) -> Identical a (Mutator b) s (Mutator t)
- type AnEquality' s a = AnEquality s s a a
- runEq :: AnEquality s t a b -> Identical s t a b
- substEq :: AnEquality s t a b -> ((s ~ a, t ~ b) => r) -> r
- mapEq :: AnEquality s t a b -> f s -> f a
- fromEq :: AnEquality s t a b -> Equality b a t s
- simply :: (Overloaded' p f s a -> r) -> Overloaded' p f s a -> r
- data Identical a b s t where
A witness that
(a ~ s, b ~ t).
Note: Composition with an
Equality is index-preserving.
When you see this as an argument to a function, it expects an
We can use
Equality to do substitution into anything.
This is an adverb that can be used to modify many other
Lens combinators to make them require
simple lenses, simple traversals, simple prisms or simple isos as input.