optics-extra-0.1: Extra utilities and instances for optics-core
Data.HashSet.Optics
Description
This module defines optics for constructing and manipulating finite HashSets.
HashSet
setmapped :: (Eq b, Hashable b) => Setter (HashSet a) (HashSet b) a b Source #
This Setter can be used to change the type of a HashSet by mapping the elements to new values.
Setter
Sadly, you can't create a valid Traversal for a HashSet, 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, Eq a, Hashable a) => Optic' k is s a -> s -> HashSet a Source #
Construct a HashSet from a fold.
>>> setOf folded ["hello","world"] fromList ["hello","world"]
setOf folded ["hello","world"]
>>> setOf (folded % _2) [("hello",1),("world",2),("!!!",3)] fromList [1,2,3]
setOf (folded % _2) [("hello",1),("world",2),("!!!",3)]