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

Safe Haskell | None
Language | Haskell2010

Data.IntSet.Optics

Description

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

Synopsis

- members :: Fold IntSet Int
- setmapped :: Setter' IntSet Int
- setOf :: forall k (is :: IxList) s. Is k A_Fold => Optic' k is s Int -> s -> IntSet

# Documentation

members :: Fold IntSet Int Source #

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 :: Setter' IntSet Int Source #

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

Sadly, you can't create a valid `Traversal` for an `IntSet`, 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 :: forall k (is :: IxList) s. Is k A_Fold => Optic' k is s Int -> s -> IntSet Source #

Construct an `IntSet` from a fold.

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

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