它们在Idris 0.9.14中实现,我成功地使用induction
进行了一些证明。但是,它们仅适用于某些库类型;例如,Vect
支持它们,几乎同构All
不支持:
-Main.h2> induction ys1 INTERNAL ERROR: induction needs an eliminator for Data.Vect.Quantifiers.All
This is probably a bug, or a missing error message.
Please consider reporting at https://github.com/idris-lang/Idris-dev/issues
遗憾的是,没有足够的语言文档,我也无法找到如何为自定义类型实现淘汰/案例分析。深入Prelude,我找到了%elim
修饰符,但它没有帮助。有没有人举例说明前面提到的All
?
答案 0 :(得分:2)
induction
策略只能用于使用%elim
声明的类型。有些人认为伊德里斯应尽可能自动生成消除器,但似乎有一些技术上的困难。
有人可以举例说明前面提到的All吗?
据我所知,将%elim
添加到All
的定义应该没有问题(只需编辑文件Quantifiers.idr
并重新编译idris)。您可能想在Github上提交拉取请求。