lens-3.10: Lenses, Folds and Traversals

Portability | portable
Stability | provisional
Maintainer | Edward Kmett <ekmett@gmail.com>
Safe Haskell | Trustworthy

Control.Parallel.Strategies.Lens

Description

A `Lens` or `Traversal` can be used to take the role of `Traversable` in `Control.Parallel.Strategies`, enabling those combinators to work with monomorphic containers.

Synopsis

- evalOf :: LensLike' Eval s a -> Strategy a -> Strategy s
- parOf :: LensLike' Eval s a -> Strategy a -> Strategy s
- after :: Strategy s -> LensLike f s t a b -> LensLike f s t a b
- throughout :: Strategy s -> LensLike f s t a b -> LensLike f s t a b

# Documentation

evalOf :: LensLike' Eval s a -> Strategy a -> Strategy sSource

Evaluate the targets of a `Lens` or `Traversal` into a data structure according to the given `Strategy`.

     evalTraversable = evalOf traverse = traverse
     evalOf = id

     evalOf :: Lens' s a -> Strategy a -> Strategy s
     evalOf :: Traversal' s a -> Strategy a -> Strategy s
     evalOf :: (a -> Eval a) -> s -> Eval s) -> Strategy a -> Strategy s

parOf :: LensLike' Eval s a -> Strategy a -> Strategy sSource

Evaluate the targets of a `Lens` or `Traversal` according into a data structure according to a given `Strategy` in parallel.

    parTraversable = parOf traverse

     parOf :: Lens' s a -> Strategy a -> Strategy s
     parOf :: Traversal' s a -> Strategy a -> Strategy s
     parOf :: ((a -> Eval a) -> s -> Eval s) -> Strategy a -> Strategy s

after :: Strategy s -> LensLike f s t a b -> LensLike f s t a bSource

Transform a `Lens`, `Fold`, `Getter`, `Setter` or `Traversal` to first evaluates its argument according to a given `Strategy` before proceeding.

     after rdeepseq traverse :: Traversable t => Strategy a -> Strategy [a]

throughout :: Strategy s -> LensLike f s t a b -> LensLike f s t a bSource

Transform a `Lens`, `Fold`, `Getter`, `Setter` or `Traversal` to evaluate its argument according to a given `Strategy` in parallel with evaluating.

     throughout rdeepseq traverse :: Traversable t => Strategy a -> Strategy [a]