pointless-lenses-0.0.4: Pointless Lenses library

Portabilitynon-portable
Stabilityexperimental
Maintainerhpacheco@di.uminho.pt

Generics.Pointless.Lenses.Combinators

Contents

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.