haskell - Control.Lens.Plated.transform 在使用 Data.Data.Lens.uniplate 提供 Plated 实例时不会遍历整个结构
问题描述
我正在使用为以下自相似类型Data.Data.Lens.uniplate
定义实例。Plated
data Formula a = Atom a
| Conjunction [Formula a]
| If Expr Expr (Formula a) (Formula a)
deriving (Eq, Ord, Read, Show, Data, Typeable)
instance Plated (Formula a) where
plate = uniplate
当我调用遍历重写叶子节点Control.Lens.Plated.transform
的实例时,遍历不会进入构造的第二个“else”分支!构造函数内部列表中的所有都被遍历,但只遍历构造函数中的第一个。Formula a
Atom a
If
Formula a
Conjunction
Formula a
If
我看不出这段代码与 Haddock 中的示例有任何显着差异(https://hackage.haskell.org/package/lens-4.2/docs/Control-Lens-Plated.html#t:Plated)
我在这里想念什么?
解决方案
推荐阅读
- sql - SQL中布尔列的逻辑与
- c++ - 有没有办法将整数转换为字符串?
- css - 我可以用css按钮运行动画吗?
- pandas - 熊猫 - 将数据月 yyyymm 转换为日期时间 yyyy-mm-dd
- typescript - TypeScript 在找到条目后打破循环
- flutter - 未处理的异常:NoSuchMethodError:类“字符串”没有实例获取器“路径”
- python-3.x - ed25519共享密协议的python实现
- c# - iText7 C# SetBorder(Border.NO_BORDER) 不起作用
- python - Gunicorn worker 突然重启,没有任何错误
- python - 如何将所有文件目录从本地机器移动/复制到 s3 存储桶