Generics.Pointless.Lenses.Combinators
 Portability non-portable Stability experimental Maintainer hpacheco@di.uminho.pt
 Contents Point-free lens combinators Point-free isomorphism combinators
Description

Pointless Lenses: bidirectional lenses with point-free programming

This module lifts a standard set of point-free combinators into bidirectional lenses.

Synopsis
 ap_lns :: Eq a => a -> Lens (a -> b, a) b (?<) :: Eq a => Lens (a -> Bool, a) (Either a a) rexp_lns :: Lens b c -> Lens (a -> b) (a -> c) (.<) :: Lens b a -> Lens c b -> Lens c a fst_lns :: b -> Lens (a, b) a snd_lns :: a -> Lens (a, b) b (><<) :: Lens c a -> Lens d b -> Lens (c, d) (a, b) (.\/<) :: Lens a c -> Lens b c -> Lens (Either a b) c (\/.<) :: Lens a c -> Lens b c -> Lens (Either a b) c (-|-<) :: Lens c a -> Lens d b -> Lens (Either c d) (Either a b) sum_lns :: ((a, d) -> c) -> ((b, c) -> d) -> Lens c a -> Lens d b -> Lens (Either c d) (Either a b) (!<) :: c -> Lens c One (!\/<) :: Eq a => a -> Lens b a -> c -> Lens (Either c b) a (\/!<) :: Eq a => a -> Lens c a -> b -> Lens (Either c b) a (#\/<) :: Lens b (Either a c) -> Lens (Either a b) (Either a c) (\/\$<) :: Lens a (Either c b) -> Lens (Either a b) (Either c b) id_lns :: Lens c c distp_lns :: Lens ((c, d), (a, b)) ((c, a), (d, b)) dists_lns :: Lens (Either a b, Either c d) (Either (Either (a, c) (a, d)) (Either (b, c) (b, d))) swap_lns :: Lens (a, b) (b, a) coswap_lns :: Lens (Either a b) (Either b a) distl_lns :: Lens (Either a b, c) (Either (a, c) (b, c)) undistl_lns :: Lens (Either (a, c) (b, c)) (Either a b, c) distr_lns :: Lens (c, Either a b) (Either (c, a) (c, b)) undistr_lns :: Lens (Either (c, a) (c, b)) (c, Either a b) assocl_lns :: Lens (a, (b, c)) ((a, b), c) assocr_lns :: Lens ((a, b), c) (a, (b, c)) coassocl_lns :: Lens (Either a (Either b c)) (Either (Either a b) c) coassocr_lns :: Lens (Either (Either a b) c) (Either a (Either b c))
Point-free lens combinators
 ap_lns :: Eq a => a -> Lens (a -> b, a) b Source
Function application is a lens.
 (?<) :: Eq a => Lens (a -> Bool, a) (Either a a) Source
Predicate application is a lens.
 rexp_lns :: Lens b c -> Lens (a -> b) (a -> c) Source
The right exponentiation combinator as a lens. Applies a lens to the domain of a function.
 (.<) :: Lens b a -> Lens c b -> Lens c a Source
The lens composition operator.
 fst_lns :: b -> Lens (a, b) a Source
The fst point-free combinator.
 snd_lns :: a -> Lens (a, b) b Source
The snd point-free combinator.
 (><<) :: Lens c a -> Lens d b -> Lens (c, d) (a, b) Source
The >< point-free combinator.
 (.\/<) :: Lens a c -> Lens b c -> Lens (Either a b) c Source
The left-biased / point-free combinator. It chooses left values over right values in the create direction.
 (\/.<) :: Lens a c -> Lens b c -> Lens (Either a b) c Source
The right-biased / point-free combinator. It chooses right values over left values in the create direction.
 (-|-<) :: Lens c a -> Lens d b -> Lens (Either c d) (Either a b) Source
The -|- point-free combinator.
 sum_lns :: ((a, d) -> c) -> ((b, c) -> d) -> Lens c a -> Lens d b -> Lens (Either c d) (Either a b) Source
The -|- point-free combinator with user-defined backward behavior.
 (!<) :: c -> Lens c One Source
The pnt point-free combinator.
 (!\/<) :: Eq a => a -> Lens b a -> c -> Lens (Either c b) a Source
The (a!) / f point-free expression, where a is a constant and f a function. The additional argument of type c is the default value when the view matches the constant of type a.
 (\/!<) :: Eq a => a -> Lens c a -> b -> Lens (Either c b) a Source
The f / (a!) point-free expression, where a is a constant and f a function. The additional argument of type b is the default value when the view matches the constant of type a.
 (#\/<) :: Lens b (Either a c) -> Lens (Either a b) (Either a c) Source
The inl / f point-free expression, where f is a function.
 (\/\$<) :: Lens a (Either c b) -> Lens (Either a b) (Either c b) Source
The f / inr point-free expression, where f is a function.
Point-free isomorphism combinators
 id_lns :: Lens c c Source
The lens identity combinator.
 distp_lns :: Lens ((c, d), (a, b)) ((c, a), (d, b)) Source
The distp point-free combinator.
 dists_lns :: Lens (Either a b, Either c d) (Either (Either (a, c) (a, d)) (Either (b, c) (b, d))) Source
The dists point-free combinator.
 swap_lns :: Lens (a, b) (b, a) Source
The swap point-free combinator.
 coswap_lns :: Lens (Either a b) (Either b a) Source
The coswap point-free combinator
 distl_lns :: Lens (Either a b, c) (Either (a, c) (b, c)) Source
The distl point-free combinator.
 undistl_lns :: Lens (Either (a, c) (b, c)) (Either a b, c) Source
The undistl point-free combinator.
 distr_lns :: Lens (c, Either a b) (Either (c, a) (c, b)) Source
The distr point-free combinator.
 undistr_lns :: Lens (Either (c, a) (c, b)) (c, Either a b) Source
The undistr point-free combinator.
 assocl_lns :: Lens (a, (b, c)) ((a, b), c) Source
The assocl point-free combinator.
 assocr_lns :: Lens ((a, b), c) (a, (b, c)) Source
The assocr point-free combinator.
 coassocl_lns :: Lens (Either a (Either b c)) (Either (Either a b) c) Source
The coassocl point-free combinator.
 coassocr_lns :: Lens (Either (Either a b) c) (Either a (Either b c)) Source
The coassocr point-free combinator.