我们可以用镜头查询和更新不同级别的结构吗?

时间:2018-10-26 19:34:32

标签: haskell lens

在处理嵌套结构(来自各种API的JSON)时,我经常使用lens,而且我担心使用lens进行非平凡的数据操作会有些复杂。

“平凡”是指在与我查询的节点不同的节点上执行更新。

例如,我会:

  • 向下钻取以获得有趣值的可折叠列表(例如price
  • 在该列表上应用条件(例如max)以标识结果的“拥有”实体(例如order
  • 再次向下钻取一些有趣的值(例如,客户的vip标志)
  • 最后,更新该结构中的另一个值(例如免费向最新订单添加新的item

一种比较可靠的策略是使用“阶段”,其中使用简单的镜头来提取中期结果并应用新镜头来进一步缩小范围或更新结果。但这有点违背镜头的精神,在那儿我应该能够更新整个结构。

有时候我很幸运地找到maximumByOfaside之类的组合器,但我感到我缺乏词汇和对问题的理解-什么样的组合器足以完成此类任务? / p>

使用lens可以做到这一点吗?

0 个答案:

没有答案