Haskell - 结合不同镜头的结果
Haskell - Combine results from separate lenses
我正在尝试完成如下操作:
jsonStr = "{\"a\": \"hello\",
\"b\": [\"world\", \"everyone\", \"42\"]}"
someALens = ...
someBLens = ...
combinedJson = jsonStr ... someALens ... someBLens
得到结果:
combinedJson == ["hello world", "hello everyone", "hello 42"]
但是,我一直在寻找的组合运算符(如 <>~
)似乎需要一个设定值才能在镜头上映射(或以其他方式组合)。我如何创建一个可以组合多个镜头的值的复合镜头?
正如评论中所讨论的那样,答案有点虎头蛇尾 jsonStr ^.. (someALens <> someBLens)
。两个吸气剂映射成一个折叠。幺半群,我们永远的朋友。
我正在尝试完成如下操作:
jsonStr = "{\"a\": \"hello\",
\"b\": [\"world\", \"everyone\", \"42\"]}"
someALens = ...
someBLens = ...
combinedJson = jsonStr ... someALens ... someBLens
得到结果:
combinedJson == ["hello world", "hello everyone", "hello 42"]
但是,我一直在寻找的组合运算符(如 <>~
)似乎需要一个设定值才能在镜头上映射(或以其他方式组合)。我如何创建一个可以组合多个镜头的值的复合镜头?
正如评论中所讨论的那样,答案有点虎头蛇尾 jsonStr ^.. (someALens <> someBLens)
。两个吸气剂映射成一个折叠。幺半群,我们永远的朋友。