Предположим, я хотел создать "опцию" для содержимого MaybeT m a
:
maybeTContents = _Wrapped .
something
. _Just
Есть ли такой something
?
maybeTContents
будет, например, быть Traversal
, когда m
есть []
,
но только a Setter
, когда m
есть (->) Int
.
Пример использования:
> MaybeT [Just 1, Nothing, Just 2] ^.. maybeTContents
[1, 2]
> runMaybeT (MaybeT (Just . ('e':)) & maybeTContents %~ ('H':)) "llo"
Just "Hello"