lens-5.3.3: Lenses, Folds and Traversals

Copyright | (C) 2012-16 Edward Kmett
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | provisional
Portability | portable
Safe Haskell | Safe-Inferred
Language | Haskell2010

Data.IntSet.Lens

Description

Synopsis

- members :: Fold IntSet Int
- setmapped :: IndexPreservingSetter' IntSet Int
- setOf :: Getting IntSet s Int -> s -> IntSet

# Documentation

members :: Fold IntSet Int #

IntSet isn't Foldable, but this `Fold` can be used to access the members of an `IntSet`.

    >>> sumOf members $ setOf folded [1,2,3,4]
    10

setmapped :: IndexPreservingSetter' IntSet Int #

This `Setter` can be used to change the contents of an `IntSet` by mapping the elements to new values.

Sadly, you can't create a valid `Traversal` for an `IntSet`, because the number of elements might change but you can manipulate it by reading using `folded` and reindexing it via `setmapped`.

    >>> over setmapped (+1) (IntSet.fromList [1,2,3,4])
    fromList [2,3,4,5]

setOf :: Getting IntSet s Int -> s -> IntSet #

Construct an `IntSet` from a `Getter`, `Fold`, `Traversal`, `Lens` or `Iso`.

    >>> setOf folded [1,2,3,4]
    fromList [1,2,3,4]

    >>> setOf (folded._2) [("hello",1),("world",2),("!!!",3)]
    fromList [1,2,3]

    setOf :: Getter s Int     -> s -> IntSet
    setOf :: Fold s Int       -> s -> IntSet
    setOf :: Iso' s Int       -> s -> IntSet
    setOf :: Lens' s Int      -> s -> IntSet
    setOf :: Traversal' s Int -> s -> IntSet