Haskell Lens:可能的棱镜

cdu*_*ont 4 haskell haskell-lens

我有这些镜头:

getB :: Lens' A (Maybe B) 

getC :: Prism' B C
Run Code Online (Sandbox Code Playgroud)

如何Maybe C从A中提取a ?我能找到的最好的:

case A ^. getB of
    Just b -> b ^? getC
    Nothing -> Nothing
Run Code Online (Sandbox Code Playgroud)

还有更优雅的吗?

Mas*_*sse 6

_Just :: Prism' (Maybe a) a
Run Code Online (Sandbox Code Playgroud)

该_Just棱镜将让你的价值出来的Maybe。

a ^? getB . _Just . getC
Run Code Online (Sandbox Code Playgroud)