lens-1.8: Lenses, Folds and Traversals

Portabilityportable
Stabilityprovisional
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellSafe-Infered

Data.Set.Lens

Description

 

Synopsis

Documentation

contains :: Ord k => k -> Simple Lens (Set k) BoolSource

This Lens can be used to read, write or delete a member of a Set

>>> :m + Data.Set.Lens Control.Lens
>>> contains 3 .~ False $ Set.fromList [1,2,3,4]
fromList [1,2,4]
 contains :: Ord k => k -> (Bool -> f Bool) -> Set k -> f (Set k)

setmapped :: (Ord i, Ord j) => Setter (Set i) (Set j) i jSource

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 setmap.

>>> :m + Data.Set.Lens Control.Lens
>>> adjust setmapped (+1) (fromList [1,2,3,4])
fromList [2,3,4,5]

setOf :: Getting (Set c) a c -> a -> Set cSource

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

>>> :m + Data.Set.Lens Control.Lens
>>> setOf (folded._2) [("hello",1),("world",2),("!!!",3)]
fromList [1,2,3]
 setOf ::          Getter a c           -> a -> Set c
 setOf :: Ord c => Fold a c             -> a -> Set c
 setOf ::          Simple Iso a c       -> a -> Set c
 setOf ::          Simple Lens a c      -> a -> Set c
 setOf :: Ord c => Simple Traversal a c -> a -> Set c