Haskell 镜头:多棱镜
Haskell Lens: Prism over maybes
我有那些镜头:
getB :: Lens' A (Maybe B)
getC :: Prism' B C
如何从 A 中提取 Maybe C
?
我能找到的最好的:
case A ^. getB of
Just b -> b ^? getC
Nothing -> Nothing
还有更优雅的吗?
_Just :: Prism' (Maybe a) a
_Just
棱镜将为您提供 Maybe
的价值。
a ^? getB . _Just . getC
或者您可以使用 Maybe
的 Traversable
实例,它获取 Just
中的值(如果有的话)。
-- traverse :: Traversal' (Maybe a) a
a ^? getB . traverse . getC
我有那些镜头:
getB :: Lens' A (Maybe B)
getC :: Prism' B C
如何从 A 中提取 Maybe C
?
我能找到的最好的:
case A ^. getB of
Just b -> b ^? getC
Nothing -> Nothing
还有更优雅的吗?
_Just :: Prism' (Maybe a) a
_Just
棱镜将为您提供 Maybe
的价值。
a ^? getB . _Just . getC
或者您可以使用 Maybe
的 Traversable
实例,它获取 Just
中的值(如果有的话)。
-- traverse :: Traversal' (Maybe a) a
a ^? getB . traverse . getC