optics-core-0.4.1.1: Optics as an abstract interface: core definitions

Safe Haskell | None
Language | Haskell2010

Data.Set.Optics

Description

This module defines optics for constructing and manipulating finite `Set`s.

Synopsis

- setmapped :: Ord b => Setter (Set a) (Set b) a b
- setOf :: forall k a (is :: IxList) s. (Is k A_Fold, Ord a) => Optic' k is s a -> s -> Set a

# Documentation

setmapped :: Ord b => Setter (Set a) (Set b) a b Source #

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 :: forall k a (is :: IxList) s. (Is k A_Fold, Ord a) => Optic' k is s a -> s -> Set a Source #

Construct a set from a fold.

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

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