是否有镜头操作符来组合%〜和fmap

时间:2015-06-23 12:17:35

标签: haskell lens

我有以下代码

u & currentDay %~ fmap (addDays 1)

currentDay返回Maybe,这就是我需要fmap的原因。 是否已经有一个运营商将%~fmap(例如%~<$> ;-))或一种聪明的方法结合起来?

1 个答案:

答案 0 :(得分:2)

此处没有现有的操作员,但您可以轻松定义自己的操作员:

%$~ :: Functor f => ASetter s t (f a) (f b) -> (a -> b) -> s -> t
l %$~ f = over a (fmap f)

执行此操作的标准方法是使用mapped setter:

u & currentDay . mapped %~ addDays 1

由于您在Maybe上的映射,您也可以使用_Just prism:

u & currentDay . _Just %~ addDays 1