| Copyright | (C) 2012-16 Edward Kmett |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Control.Lens.At
Description
Synopsis
- class Ixed m => At m where
- sans :: At m => Index m -> m -> m
- iat :: At m => Index m -> IndexedLens' (Index m) m (Maybe (IxValue m))
- type family Index s
- type family IxValue m
- class Ixed m where
- ix :: Index m -> Traversal' m (IxValue m)
- ixAt :: At m => Index m -> Traversal' m (IxValue m)
- iix :: Ixed m => Index m -> IndexedTraversal' (Index m) m (IxValue m)
- class Contains m where
- icontains :: Contains m => Index m -> IndexedLens' (Index m) m Bool
At
At provides a Lens that can be used to read,
write or delete the value associated with a key in a Map-like
container on an ad hoc basis.
An instance of At should satisfy:
ixk ≡atk.traverse
Methods
iat :: At m => Index m -> IndexedLens' (Index m) m (Maybe (IxValue m)) #
An indexed version of at.
>>>Map.fromList [(1,"world")] ^@. iat 1(1,Just "world")
>>>iat 1 %@~ (\i x -> if odd i then Just "hello" else Nothing) $ Map.emptyfromList [(1,"hello")]
>>>iat 2 %@~ (\i x -> if odd i then Just "hello" else Nothing) $ Map.emptyfromList []
Ixed
Instances
| type Index ByteString # | |
Defined in Control.Lens.At | |
| type Index ByteString # | |
Defined in Control.Lens.At | |
| type Index IntSet # | |
Defined in Control.Lens.At | |
| type Index Text # | |
Defined in Control.Lens.At | |
| type Index Text # | |
Defined in Control.Lens.At | |
| type Index (Complex a) # | |
Defined in Control.Lens.At | |
| type Index (Identity a) # | |
Defined in Control.Lens.At | |
| type Index (NonEmpty a) # | |
Defined in Control.Lens.At | |
| type Index (IntMap a) # | |
Defined in Control.Lens.At | |
| type Index (Seq a) # | |
Defined in Control.Lens.At | |
| type Index (Set a) # | |
Defined in Control.Lens.At | |
| type Index (Tree a) # | |
Defined in Control.Lens.At | |
| type Index (HashSet a) # | |
Defined in Control.Lens.At | |
| type Index (Vector a) # | |
Defined in Control.Lens.At | |
| type Index (Vector a) # | |
Defined in Control.Lens.At | |
| type Index (Vector a) # | |
Defined in Control.Lens.At | |
| type Index (Vector a) # | |
Defined in Control.Lens.At | |
| type Index (Maybe a) # | |
Defined in Control.Lens.At | |
| type Index [a] # | |
Defined in Control.Lens.At | |
| type Index (UArray i e) # | |
Defined in Control.Lens.At | |
| type Index (Array i e) # | |
Defined in Control.Lens.At | |
| type Index (Map k a) # | |
Defined in Control.Lens.At | |
| type Index (HashMap k a) # | |
Defined in Control.Lens.At | |
| type Index (a, b) # | |
Defined in Control.Lens.At | |
| type Index (e -> a) # | |
Defined in Control.Lens.At type Index (e -> a) = e | |
| type Index (a, b, c) # | |
Defined in Control.Lens.At | |
| type Index (a, b, c, d) # | |
Defined in Control.Lens.At | |
| type Index (a, b, c, d, e) # | |
Defined in Control.Lens.At | |
| type Index (a, b, c, d, e, f) # | |
Defined in Control.Lens.At | |
| type Index (a, b, c, d, e, f, g) # | |
Defined in Control.Lens.At | |
| type Index (a, b, c, d, e, f, g, h) # | |
Defined in Control.Lens.At | |
| type Index (a, b, c, d, e, f, g, h, i) # | |
Defined in Control.Lens.At | |
Instances
| type IxValue ByteString # | |
Defined in Control.Lens.At | |
| type IxValue ByteString # | |
Defined in Control.Lens.At | |
| type IxValue IntSet # | |
Defined in Control.Lens.At | |
| type IxValue Text # | |
Defined in Control.Lens.At | |
| type IxValue Text # | |
Defined in Control.Lens.At | |
| type IxValue (Identity a) # | |
Defined in Control.Lens.At | |
| type IxValue (NonEmpty a) # | |
Defined in Control.Lens.At | |
| type IxValue (IntMap a) # | |
Defined in Control.Lens.At | |
| type IxValue (Seq a) # | |
Defined in Control.Lens.At | |
| type IxValue (Set k) # | |
Defined in Control.Lens.At | |
| type IxValue (Tree a) # | |
Defined in Control.Lens.At | |
| type IxValue (HashSet k) # | |
Defined in Control.Lens.At | |
| type IxValue (Vector a) # | |
Defined in Control.Lens.At | |
| type IxValue (Vector a) # | |
Defined in Control.Lens.At | |
| type IxValue (Vector a) # | |
Defined in Control.Lens.At | |
| type IxValue (Vector a) # | |
Defined in Control.Lens.At | |
| type IxValue (Maybe a) # | |
Defined in Control.Lens.At | |
| type IxValue [a] # | |
Defined in Control.Lens.At type IxValue [a] = a | |
| type IxValue (UArray i e) # | |
Defined in Control.Lens.At | |
| type IxValue (Array i e) # | |
Defined in Control.Lens.At | |
| type IxValue (Map k a) # | |
Defined in Control.Lens.At | |
| type IxValue (HashMap k a) # | |
Defined in Control.Lens.At | |
| type IxValue (a, a2) # |
|
Defined in Control.Lens.At type IxValue (a, a2) = a | |
| type IxValue (e -> a) # | |
Defined in Control.Lens.At type IxValue (e -> a) = a | |
| type IxValue (a, a2, a3) # |
|
Defined in Control.Lens.At type IxValue (a, a2, a3) = a | |
| type IxValue (a, a2, a3, a4) # |
|
Defined in Control.Lens.At type IxValue (a, a2, a3, a4) = a | |
| type IxValue (a, a2, a3, a4, a5) # |
|
Defined in Control.Lens.At type IxValue (a, a2, a3, a4, a5) = a | |
| type IxValue (a, a2, a3, a4, a5, a6) # |
|
Defined in Control.Lens.At type IxValue (a, a2, a3, a4, a5, a6) = a | |
| type IxValue (a, a2, a3, a4, a5, a6, a7) # |
|
Defined in Control.Lens.At type IxValue (a, a2, a3, a4, a5, a6, a7) = a | |
| type IxValue (a, a2, a3, a4, a5, a6, a7, a8) # |
|
Defined in Control.Lens.At type IxValue (a, a2, a3, a4, a5, a6, a7, a8) = a | |
| type IxValue (a, a2, a3, a4, a5, a6, a7, a8, a9) # |
|
Defined in Control.Lens.At type IxValue (a, a2, a3, a4, a5, a6, a7, a8, a9) = a | |
Provides a simple Traversal lets you traverse the value at a given
key in a Map or element at an ordinal position in a list or Seq.
Minimal complete definition
Nothing
Methods
ix :: Index m -> Traversal' m (IxValue m) #
NB: Setting the value of this Traversal will only set the value in
at if it is already present.
If you want to be able to insert missing values, you want at.
>>>Seq.fromList [a,b,c,d] & ix 2 %~ ffromList [a,b,f c,d]
>>>Seq.fromList [a,b,c,d] & ix 2 .~ efromList [a,b,e,d]
>>>Seq.fromList [a,b,c,d] ^? ix 2Just c
>>>Seq.fromList [] ^? ix 2Nothing
Instances
| Ixed ByteString # | |
Defined in Control.Lens.At Methods ix :: Index ByteString -> Traversal' ByteString (IxValue ByteString) # | |
| Ixed ByteString # | |
Defined in Control.Lens.At Methods ix :: Index ByteString -> Traversal' ByteString (IxValue ByteString) # | |
| Ixed IntSet # | |
Defined in Control.Lens.At | |
| Ixed Text # | |
Defined in Control.Lens.At | |
| Ixed Text # | |
Defined in Control.Lens.At | |
| Ixed (Identity a) # | |
Defined in Control.Lens.At | |
| Ixed (NonEmpty a) # | |
Defined in Control.Lens.At | |
| Ixed (IntMap a) # | |
Defined in Control.Lens.At | |
| Ixed (Seq a) # | |
Defined in Control.Lens.At | |
| Ord k => Ixed (Set k) # | |
Defined in Control.Lens.At | |
| Ixed (Tree a) # | |
Defined in Control.Lens.At | |
| (Eq k, Hashable k) => Ixed (HashSet k) # | |
Defined in Control.Lens.At | |
| Ixed (Vector a) # | |
Defined in Control.Lens.At | |
| Prim a => Ixed (Vector a) # | |
Defined in Control.Lens.At | |
| Storable a => Ixed (Vector a) # | |
Defined in Control.Lens.At | |
| Unbox a => Ixed (Vector a) # | |
Defined in Control.Lens.At | |
| Ixed (Maybe a) # | |
Defined in Control.Lens.At | |
| Ixed [a] # | |
Defined in Control.Lens.At Methods ix :: Index [a] -> Traversal' [a] (IxValue [a]) # | |
| (IArray UArray e, Ix i) => Ixed (UArray i e) # | arr |
Defined in Control.Lens.At | |
| Ix i => Ixed (Array i e) # | arr |
Defined in Control.Lens.At | |
| Ord k => Ixed (Map k a) # | |
Defined in Control.Lens.At | |
| (Eq k, Hashable k) => Ixed (HashMap k a) # | |
Defined in Control.Lens.At | |
| a ~ a2 => Ixed (a, a2) # | |
Defined in Control.Lens.At Methods ix :: Index (a, a2) -> Traversal' (a, a2) (IxValue (a, a2)) # | |
| Eq e => Ixed (e -> a) # | |
Defined in Control.Lens.At Methods ix :: Index (e -> a) -> Traversal' (e -> a) (IxValue (e -> a)) # | |
| (a ~ a2, a ~ a3) => Ixed (a, a2, a3) # | |
Defined in Control.Lens.At Methods ix :: Index (a, a2, a3) -> Traversal' (a, a2, a3) (IxValue (a, a2, a3)) # | |
| (a ~ a2, a ~ a3, a ~ a4) => Ixed (a, a2, a3, a4) # | |
Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4) -> Traversal' (a, a2, a3, a4) (IxValue (a, a2, a3, a4)) # | |
| (a ~ a2, a ~ a3, a ~ a4, a ~ a5) => Ixed (a, a2, a3, a4, a5) # | |
Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4, a5) -> Traversal' (a, a2, a3, a4, a5) (IxValue (a, a2, a3, a4, a5)) # | |
| (a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6) => Ixed (a, a2, a3, a4, a5, a6) # | |
Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4, a5, a6) -> Traversal' (a, a2, a3, a4, a5, a6) (IxValue (a, a2, a3, a4, a5, a6)) # | |
| (a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6, a ~ a7) => Ixed (a, a2, a3, a4, a5, a6, a7) # | |
Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4, a5, a6, a7) -> Traversal' (a, a2, a3, a4, a5, a6, a7) (IxValue (a, a2, a3, a4, a5, a6, a7)) # | |
| (a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6, a ~ a7, a ~ a8) => Ixed (a, a2, a3, a4, a5, a6, a7, a8) # | |
Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4, a5, a6, a7, a8) -> Traversal' (a, a2, a3, a4, a5, a6, a7, a8) (IxValue (a, a2, a3, a4, a5, a6, a7, a8)) # | |
| (a ~ a2, a ~ a3, a ~ a4, a ~ a5, a ~ a6, a ~ a7, a ~ a8, a ~ a9) => Ixed (a, a2, a3, a4, a5, a6, a7, a8, a9) # | |
Defined in Control.Lens.At Methods ix :: Index (a, a2, a3, a4, a5, a6, a7, a8, a9) -> Traversal' (a, a2, a3, a4, a5, a6, a7, a8, a9) (IxValue (a, a2, a3, a4, a5, a6, a7, a8, a9)) # | |
iix :: Ixed m => Index m -> IndexedTraversal' (Index m) m (IxValue m) #
An indexed version of ix.
>>>Seq.fromList [a,b,c,d] & iix 2 %@~ f'fromList [a,b,f' 2 c,d]
>>>Seq.fromList [a,b,c,d] & iix 2 .@~ hfromList [a,b,h 2,d]
>>>Seq.fromList [a,b,c,d] ^@? iix 2Just (2,c)
>>>Seq.fromList [] ^@? iix 2Nothing
Contains
This class provides a simple Lens that lets you view (and modify)
information about whether or not a container contains a given Index.
Methods
contains :: Index m -> Lens' m Bool #
>>>IntSet.fromList [1,2,3,4] ^. contains 3True
>>>IntSet.fromList [1,2,3,4] ^. contains 5False
>>>IntSet.fromList [1,2,3,4] & contains 3 .~ FalsefromList [1,2,4]
icontains :: Contains m => Index m -> IndexedLens' (Index m) m Bool #
An indexed version of contains.
>>>IntSet.fromList [1,2,3,4] ^@. icontains 3(3,True)
>>>IntSet.fromList [1,2,3,4] ^@. icontains 5(5,False)
>>>IntSet.fromList [1,2,3,4] & icontains 3 %@~ \i x -> if odd i then not x else xfromList [1,2,4]
>>>IntSet.fromList [1,2,3,4] & icontains 3 %@~ \i x -> if even i then not x else xfromList [1,2,3,4]