伊德里斯的不可能的模式

时间:2015-10-05 11:29:54

标签: idris

我正在学习伊德里斯,我陷入了一个非常简单的引理,它表明某些特定的索引对于数据类型是不可能的。我试图使用不可能的模式,但Idris拒绝它们,并出现以下错误消息:

RegExp.idr line 32 col 13:
hasEmptyZero prf is a valid case

以下要点提供完整的代码:

https://gist.github.com/rodrigogribeiro/f27f1f035e5a98f506ee

感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

我和freenode Idris社区的人交谈,他们向我解释说 荒谬的模式需要一个明确的不可能的案例,以便发现这是不可能的。举个例子:

hasEmptyZero : HasEmpty Zero -> Void
hasEmptyZero HasEps impossible

这里放置构造函数HasEps有助于Idris检测到它不能用于构造类型HasEmpty Zero的值。完整的(工作)代码如下:

https://gist.github.com/rodrigogribeiro/5b39048df1d9ddc083ec