pointless-lenses-0.0.4: Pointless Lenses library

Portability non-portable experimental hpacheco@di.uminho.pt

Generics.Pointless.Lenses.Combinators

Description

Pointless Lenses: bidirectional lenses with point-free programming

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

Synopsis

# Point-free lens combinators

ap_lns :: Eq a => a -> Lens (a -> b, a) bSource

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 aSource

The lens composition operator.

fst_lns :: b -> Lens (a, b) aSource

The `fst` point-free combinator.

snd_lns :: a -> Lens (a, b) bSource

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) cSource

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) cSource

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 OneSource

The `pnt` point-free combinator.

(!\/<) :: Eq a => a -> Lens c a -> Lens (Either c b) aSource

The `(a!) / f` point-free expression, where `a` is a constant and `f` a function.

(\/!<) :: Eq a => a -> Lens b a -> Lens (Either c b) aSource

The `f / (a!)` point-free expression, where `a` is a constant and `f` a function.

# Point-free isomorphism combinators

id_lns :: Lens c cSource

The lens identity combinator.

distp :: ((c, d), (a, b)) -> ((c, a), (d, b))Source

The product distribution combinator

distp_lns :: Lens ((c, d), (a, b)) ((c, a), (d, b))Source

The `distp` point-free combinator.

dists :: (Either a b, Either c d) -> Either (Either (a, c) (a, d)) (Either (b, c) (b, d))Source

The sum distribution 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.