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)。两个吸气剂映射成一个折叠。幺半群,我们永远的朋友。