Pau*_*-AG 2 haskell haskell-lens
如何解释第三个结果?为什么返回的列表为空?
>[Just 1, Just 2, Nothing, Just 3]^..folded._Just
[1,2,3]
>"1"^?_Show::Maybe Int
Just 1
>["1", "2", "x"]^..folded._Show :: [Maybe Int]
[]
Run Code Online (Sandbox Code Playgroud)
_Just和_Show是棱镜:
>:t _Just
_Just :: Prism (Maybe a) (Maybe b) a b
>:t _Show
_Show :: (Read a, Show a) => Prism' String a
Run Code Online (Sandbox Code Playgroud)
但_Show并不像我预期的那样工作。[Just 1, Just 2]如何用透镜/棱镜得到结果?当然,我可以使用to readMaybe,但我想我可以使用现有的 prism 而不是 helper to。
["1", "2", "x"]^..folded._Show :: [Maybe Int]尝试将每个元素读取为Maybe Int,因此列表需要类似于["Just 1", "Just 2", "x"]。
您可以将每个元素解析为Int,然后将其包装Just为 get [Just 1, Just 2]。
["1", "2", "x"] ^.. folded . _Show @Int . re _Just
Run Code Online (Sandbox Code Playgroud)