Portability | rank 2 types, MPTCs, TFs, flexible |
---|---|
Stability | provisional |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Safe Haskell | None |
- type IndexedLens i a b c d = forall f k. (Indexed i k, Functor f) => k (c -> f d) (a -> f b)
- class At k m | m -> k where
- at :: k -> SimpleIndexedLens k (m v) (Maybe v)
- class Contains k m | m -> k where
- contains :: k -> SimpleIndexedLens k m Bool
- (%%@~) :: Overloaded (Index i) f a b c d -> (i -> c -> f d) -> a -> f b
- (<%@~) :: Overloaded (Index i) ((,) d) a b c d -> (i -> c -> d) -> a -> (d, b)
- (%%@=) :: MonadState a m => Overloaded (Index i) ((,) e) a a c d -> (i -> c -> (e, d)) -> m e
- (<%@=) :: MonadState a m => Overloaded (Index i) ((,) d) a a c d -> (i -> c -> d) -> m d
- newtype ReifiedIndexedLens i a b c d = ReifyIndexedLens {
- reflectIndexedLens :: IndexedLens i a b c d
- type SimpleIndexedLens i a b = IndexedLens i a a b b
- type SimpleReifiedIndexedLens i a b = ReifiedIndexedLens i a a b b
Indexed Lenses
type IndexedLens i a b c d = forall f k. (Indexed i k, Functor f) => k (c -> f d) (a -> f b)Source
Every IndexedLens
is a valid Lens
and a valid IndexedTraversal
.
Common Indexed Lenses
class At k m | m -> k whereSource
Provides an IndexedLens
that can be used to read, write or delete the value associated with a key in a map-like container.
at :: k -> SimpleIndexedLens k (m v) (Maybe v)Source
>>>
Map.fromList [(1,"hello")] ^.at 1
Just "hello"
>>>
at 1 ?~ "hello" $ Map.empty
fromList [(1,"hello")]
class Contains k m | m -> k whereSource
Provides an IndexedLens
that can be used to read, write or delete a member of a set-like container
contains :: k -> SimpleIndexedLens k m BoolSource
>>>
contains 3 .~ False $ IntSet.fromList [1,2,3,4]
fromList [1,2,4]
Indexed Lens Combinators
(%%@~) :: Overloaded (Index i) f a b c d -> (i -> c -> f d) -> a -> f bSource
Adjust the target of an IndexedLens
returning a supplementary result, or
adjust all of the targets of an IndexedTraversal
and return a monoidal summary
of the supplementary results and the answer.
(%%@~
) =withIndex
(%%@~
) ::Functor
f =>IndexedLens
i a b c d -> (i -> c -> f d) -> a -> f b (%%@~
) ::Functor
f =>IndexedTraversal
i a b c d -> (i -> c -> f d) -> a -> f b
In particular, it is often useful to think of this function as having one of these even more restrictive type signatures
(%%@~
) ::IndexedLens
i a b c d -> (i -> c -> (e, d)) -> a -> (e, b) (%%@~
) ::Monoid
e =>IndexedTraversal
i a b c d -> (i -> c -> (e, d)) -> a -> (e, b)
(<%@~) :: Overloaded (Index i) ((,) d) a b c d -> (i -> c -> d) -> a -> (d, b)Source
Adjust the target of an IndexedLens
returning the intermediate result, or
adjust all of the targets of an IndexedTraversal
and return a monoidal summary
along with the answer.
l<%~
f = l<%@~
const
f
When you do not need access to the index then (<%~
) is more liberal in what it can accept.
If you do not need the intermediate result, you can use (%@~
) or even (%~
).
(<%@~
) ::IndexedLens
i a b c d -> (i -> c -> d) -> a -> (d, b) (<%@~
) ::Monoid
d =>IndexedTraversal
i a b c d -> (i -> c -> d) -> a -> (d, b)
(%%@=) :: MonadState a m => Overloaded (Index i) ((,) e) a a c d -> (i -> c -> (e, d)) -> m eSource
Adjust the target of an IndexedLens
returning a supplementary result, or
adjust all of the targets of an IndexedTraversal
within the current state, and
return a monoidal summary of the supplementary results.
l%%@=
f =state
(l%%@~
f)
(%%@=
) ::MonadState
a mIndexedLens
i a a c d -> (i -> c -> (e, d)) -> a -> m e (%%@=
) :: (MonadState
a m,Monoid
e) =>IndexedTraversal
i a a c d -> (i -> c -> (e, d)) -> a -> m e
(<%@=) :: MonadState a m => Overloaded (Index i) ((,) d) a a c d -> (i -> c -> d) -> m dSource
Adjust the target of an IndexedLens
returning the intermediate result, or
adjust all of the targets of an IndexedTraversal
within the current state, and
return a monoidal summary of the intermediate results.
(<%@=
) ::MonadState
a mIndexedLens
i a a c d -> (i -> c -> d) -> a -> m d (<%@=
) :: (MonadState
a m,Monoid
e) =>IndexedTraversal
i a a c d -> (i -> c -> d) -> a -> m d
Storing Indexed Lenses
newtype ReifiedIndexedLens i a b c d Source
Useful for storage.
ReifyIndexedLens | |
|
Simple
type SimpleIndexedLens i a b = IndexedLens i a a b bSource
typeSimpleIndexedLens
i =Simple
(IndexedLens
i)
type SimpleReifiedIndexedLens i a b = ReifiedIndexedLens i a a b bSource
typeSimpleIndexedLens
i =Simple
(ReifiedIndexedLens
i)