标签: haskell lens
我有以下代码
u & currentDay %~ fmap (addDays 1)
currentDay返回Maybe,这就是我需要fmap的原因。 是否已经有一个运营商将%~和fmap(例如%~<$> ;-))或一种聪明的方法结合起来?
currentDay
Maybe
fmap
%~
%~<$>
答案 0 :(得分:2)
此处没有现有的操作员,但您可以轻松定义自己的操作员:
%$~ :: Functor f => ASetter s t (f a) (f b) -> (a -> b) -> s -> t l %$~ f = over a (fmap f)
执行此操作的标准方法是使用mapped setter:
mapped
u & currentDay . mapped %~ addDays 1
由于您在Maybe上的映射,您也可以使用_Just prism:
_Just
u & currentDay . _Just %~ addDays 1