lens-5.2.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 | Trustworthy
Language | Haskell2010

Data.Set.Lens

Description

Synopsis

- setmapped :: Ord j => IndexPreservingSetter (Set i) (Set j) i j
- setOf :: Getting (Set a) s a -> s -> Set a

# Documentation

setmapped :: Ord j => IndexPreservingSetter (Set i) (Set j) i j #

This `Setter` can be used to change the type of a `Set` by mapping the elements to new values.

Sadly, you can't create a valid `Traversal` for a `Set`, but you can manipulate it by reading using `folded` and reindexing it via `setmapped`.

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

setOf :: Getting (Set a) s a -> s -> Set a #

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

    >>> setOf folded ["hello","world"]
    fromList ["hello","world"]

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

    setOf ::          Getter s a     -> s -> Set a
    setOf :: Ord a => Fold s a       -> s -> Set a
    setOf ::          Iso' s a       -> s -> Set a
    setOf ::          Lens' s a      -> s -> Set a
    setOf :: Ord a => Traversal' s a -> s -> Set a