Haskell 镜头:对 Maybe 类型的视线

3

我有以下这些镜头:

getB :: Lens' A (Maybe B) 

getC :: Prism' B C

我该如何从 A 中提取一个 Maybe C 呢? 我找到的最佳解决方案是:
case A ^. getB of
    Just b -> b ^? getC
    Nothing -> Nothing

有更优雅的实现方式吗?

2个回答

5
_Just :: Prism' (Maybe a) a
_Just 棱镜可以从 Maybe 中取出它的值。
a ^? getB . _Just . getC

0

或者你可以使用 MaybeTraversable 实例,如果存在值,则获取 Just 内部的值。

-- traverse :: Traversal' (Maybe a) a
a ^? getB . traverse . getC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接