optics-core-0.2: Optics as an abstract interface: core definitions
Data.IntSet.Optics
Description
This module defines optics for constructing and manipulating finite IntSets.
IntSet
members :: Fold IntSet Int Source #
IntSet isn't Foldable, but this Fold can be used to access the members of an IntSet.
Fold
>>> sumOf members $ setOf folded [1,2,3,4] 10
>>>
sumOf members $ setOf folded [1,2,3,4]
setmapped :: Setter' IntSet Int Source #
This Setter can be used to change the type of a IntSet by mapping the elements to new values.
Setter
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.
Traversal
folded
setmapped
>>> over setmapped (+1) (fromList [1,2,3,4]) fromList [2,3,4,5]
over setmapped (+1) (fromList [1,2,3,4])
setOf :: 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 [1,2,3,4]
>>> setOf (folded % _2) [("hello",1),("world",2),("!!!",3)] fromList [1,2,3]
setOf (folded % _2) [("hello",1),("world",2),("!!!",3)]