| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Optics.View
Description
EXPERIMENTAL
Synopsis
- class ViewableOptic k r where
- type ViewResult k r :: Type
- gview :: MonadReader s m => Optic' k is s r -> m (ViewResult k r)
- gviews :: MonadReader s m => Optic' k is s a -> (a -> r) -> m (ViewResult k r)
- guse :: (ViewableOptic k a, MonadState s m) => Optic' k is s a -> m (ViewResult k a)
- guses :: (ViewableOptic k r, MonadState s m) => Optic' k is s a -> (a -> r) -> m (ViewResult k r)
- glistening :: (ViewableOptic k r, MonadWriter s m) => Optic' k is s r -> m a -> m (a, ViewResult k r)
- glistenings :: (ViewableOptic k r, MonadWriter s m) => Optic' k is s a -> (a -> r) -> m b -> m (b, ViewResult k r)
Documentation
class ViewableOptic k r where Source #
Generalized view (even more powerful than view from the lens library).
View the value(s) pointed to by an optic.
The type of the result depends on the optic. You get:
- Exactly one result
awithIso,Lens,ReversedPrismandGetter. - At most one result
Maybe awithPrism,AffineTraversalandAffineFold. - Monoidal summary of all results
Monoid a => awithTraversalandFold.
When in doubt, use specific, flavour restricted versions. This function is
mostly useful for things such as passthrough.
Associated Types
type ViewResult k r :: Type Source #
Methods
gview :: MonadReader s m => Optic' k is s r -> m (ViewResult k r) Source #
gviews :: MonadReader s m => Optic' k is s a -> (a -> r) -> m (ViewResult k r) Source #
Instances
| Monoid r => ViewableOptic A_Fold r Source # | |
Defined in Optics.View Associated Types type ViewResult A_Fold r Source # Methods gview :: forall s m (is :: IxList). MonadReader s m => Optic' A_Fold is s r -> m (ViewResult A_Fold r) Source # gviews :: forall s m (is :: IxList) a. MonadReader s m => Optic' A_Fold is s a -> (a -> r) -> m (ViewResult A_Fold r) Source # | |
| ViewableOptic A_Getter r Source # | |
Defined in Optics.View Associated Types type ViewResult A_Getter r Source # Methods gview :: forall s m (is :: IxList). MonadReader s m => Optic' A_Getter is s r -> m (ViewResult A_Getter r) Source # gviews :: forall s m (is :: IxList) a. MonadReader s m => Optic' A_Getter is s a -> (a -> r) -> m (ViewResult A_Getter r) Source # | |
| ViewableOptic A_Lens r Source # | |
Defined in Optics.View Associated Types type ViewResult A_Lens r Source # Methods gview :: forall s m (is :: IxList). MonadReader s m => Optic' A_Lens is s r -> m (ViewResult A_Lens r) Source # gviews :: forall s m (is :: IxList) a. MonadReader s m => Optic' A_Lens is s a -> (a -> r) -> m (ViewResult A_Lens r) Source # | |
| ViewableOptic A_Prism r Source # | |
Defined in Optics.View Associated Types type ViewResult A_Prism r Source # Methods gview :: forall s m (is :: IxList). MonadReader s m => Optic' A_Prism is s r -> m (ViewResult A_Prism r) Source # gviews :: forall s m (is :: IxList) a. MonadReader s m => Optic' A_Prism is s a -> (a -> r) -> m (ViewResult A_Prism r) Source # | |
| ViewableOptic A_ReversedPrism r Source # | |
Defined in Optics.View Associated Types type ViewResult A_ReversedPrism r Source # Methods gview :: forall s m (is :: IxList). MonadReader s m => Optic' A_ReversedPrism is s r -> m (ViewResult A_ReversedPrism r) Source # gviews :: forall s m (is :: IxList) a. MonadReader s m => Optic' A_ReversedPrism is s a -> (a -> r) -> m (ViewResult A_ReversedPrism r) Source # | |
| Monoid r => ViewableOptic A_Traversal r Source # | |
Defined in Optics.View Associated Types type ViewResult A_Traversal r Source # Methods gview :: forall s m (is :: IxList). MonadReader s m => Optic' A_Traversal is s r -> m (ViewResult A_Traversal r) Source # gviews :: forall s m (is :: IxList) a. MonadReader s m => Optic' A_Traversal is s a -> (a -> r) -> m (ViewResult A_Traversal r) Source # | |
| ViewableOptic An_AffineFold r Source # | |
Defined in Optics.View Associated Types type ViewResult An_AffineFold r Source # Methods gview :: forall s m (is :: IxList). MonadReader s m => Optic' An_AffineFold is s r -> m (ViewResult An_AffineFold r) Source # gviews :: forall s m (is :: IxList) a. MonadReader s m => Optic' An_AffineFold is s a -> (a -> r) -> m (ViewResult An_AffineFold r) Source # | |
| ViewableOptic An_AffineTraversal r Source # | |
Defined in Optics.View Associated Types type ViewResult An_AffineTraversal r Source # Methods gview :: forall s m (is :: IxList). MonadReader s m => Optic' An_AffineTraversal is s r -> m (ViewResult An_AffineTraversal r) Source # gviews :: forall s m (is :: IxList) a. MonadReader s m => Optic' An_AffineTraversal is s a -> (a -> r) -> m (ViewResult An_AffineTraversal r) Source # | |
| ViewableOptic An_Iso r Source # | |
Defined in Optics.View Associated Types type ViewResult An_Iso r Source # Methods gview :: forall s m (is :: IxList). MonadReader s m => Optic' An_Iso is s r -> m (ViewResult An_Iso r) Source # gviews :: forall s m (is :: IxList) a. MonadReader s m => Optic' An_Iso is s a -> (a -> r) -> m (ViewResult An_Iso r) Source # | |
guse :: (ViewableOptic k a, MonadState s m) => Optic' k is s a -> m (ViewResult k a) Source #
Use the target of a Lens, Iso, or Getter in the current state, or use
a summary of a Fold or Traversal that points to a monoidal value.
>>>evalState (guse _1) ('a','b')'a'
>>>evalState (guse _2) ("hello","world")"world"
Since: 0.2
guses :: (ViewableOptic k r, MonadState s m) => Optic' k is s a -> (a -> r) -> m (ViewResult k r) Source #
Use the target of a Lens, Iso or Getter in the current state, or use
a summary of a Fold or Traversal that points to a monoidal value.
>>>evalState (guses _1 length) ("hello","world")5
Since: 0.2
glistening :: (ViewableOptic k r, MonadWriter s m) => Optic' k is s r -> m a -> m (a, ViewResult k r) Source #
This is a generalized form of listen that only extracts the portion of
the log that is focused on by a Getter. If given a Fold or a Traversal
then a monoidal summary of the parts of the log that are visited will be
returned.
Since: 0.2
glistenings :: (ViewableOptic k r, MonadWriter s m) => Optic' k is s a -> (a -> r) -> m b -> m (b, ViewResult k r) Source #
This is a generalized form of listen that only extracts the portion of
the log that is focused on by a Getter. If given a Fold or a Traversal
then a monoidal summary of the parts of the log that are visited will be
returned.
Since: 0.2