Haskell - 结合单独镜头的结果

时间:2016-04-09 14:55:30

标签: json haskell lens aeson

我试图完成以下内容:

jsonStr = "{\"a\": \"hello\", 
            \"b\": [\"world\", \"everyone\", \"42\"]}"
someALens = ...
someBLens = ...
combinedJson = jsonStr ... someALens ... someBLens

得到结果:

combinedJson == ["hello world", "hello everyone", "hello 42"]

然而,我发现的组合运算符(如<>~)似乎需要一个设定值来对镜头进行加速(或以其他方式组合)。我怎样才能制作出能够结合多个镜头值的复合镜头?

1 个答案:

答案 0 :(得分:4)

正如评论中所讨论的,答案是相当虎头蛇尾的jsonStr ^.. (someALens <> someBLens)。两个吸气剂成了一个折叠。 Monoids,我们的朋友永远。