haskell - 我们可以用lens查询和更新不同层次的结构吗?
问题描述
在处理嵌套结构(来自各种 API 的 JSON)时,我经常使用 lens,我担心使用 lens 进行非平凡的数据操作有些复杂。
非平凡是指在与我查询的节点不同的节点上执行更新。
例如,我会:
- 向下钻取以获得有趣值的可折叠列表(如
price
) - 在该列表上应用标准(如
max
)来识别结果的“拥有”实体(如order
) - 再次向下钻取一些有趣的值(例如,
vip
客户的标志) - 最后,更新该结构中的另一个值(比如
item
为最新订单添加一个免费的新值)
一个比较可靠的策略是使用“阶段”,其中使用简单的镜头来提取中间结果并应用新镜头来进一步缩小或更新结果。但这有点违背镜头的精神,我应该能够更新整个结构。
其他时候我很幸运能找到类似的组合器maximumByOf
,aside
但我觉得我缺乏词汇和对问题的理解——什么样的组合器足以完成这类任务?
有没有惯用的方法来解决这个问题lens
?
解决方案
推荐阅读
- scikit-learn - 词嵌入降低分类精度
- google-bigquery - GROUP BY 的 Bigquery 错误和 ALIAS 的 HAVING
- python - 无法在 Swift 中读取 JSON 返回的数组,如 Python 枚举
- inno-setup - Inno Setup 不会在 PrepareToInstall 部分重新启动
- sql-server - 从管道分隔的字符串中提取数据
- html - 为什么垂直对齐会影响前一个(相同范围)元素?
- node.js - Mongodb原生驱动超时生产值
- redis - 得分最高的 ZADD 成员
- ios - 有没有办法为 fastlane 下载的证书和配置设置目录?
- jquery - 以给定的时间间隔单击页面上的所有按钮