我正在学习伊德里斯,我陷入了一个非常简单的引理,它表明某些特定的索引对于数据类型是不可能的。我试图使用不可能的模式,但Idris拒绝它们,并出现以下错误消息:
RegExp.idr line 32 col 13:
hasEmptyZero prf is a valid case
以下要点提供完整的代码:
https://gist.github.com/rodrigogribeiro/f27f1f035e5a98f506ee
感谢任何帮助。
答案 0 :(得分:4)
我和freenode Idris社区的人交谈,他们向我解释说 荒谬的模式需要一个明确的不可能的案例,以便发现这是不可能的。举个例子:
hasEmptyZero : HasEmpty Zero -> Void
hasEmptyZero HasEps impossible
这里放置构造函数HasEps
有助于Idris检测到它不能用于构造类型HasEmpty Zero
的值。完整的(工作)代码如下:
https://gist.github.com/rodrigogribeiro/5b39048df1d9ddc083ec