尝试解释此代码时
injective : {A : Type} ->
{P : A -> Type} ->
((x : A) -> P x) ->
Type
我得到了错误
|
14 | injective : {A : Type} ->
| ^
not a terminator
这真的使我困惑。当我在声明上写private
时,错误似乎消失了,所以我猜那些访问修饰符确实改变了解析的方式。但是,我不知道为什么会这样。
那为什么会显示该错误?如果我不将in
放在前面,为什么解析器会认为private
是一个关键字(我想这是问题)而不是标识符的一部分?
[EDIT]:要获取此错误,此代码应足够:
Subset : Type -> Type
Subset a = a -> Type
syntax [x] "in" [y] = y x
Test : Type
Test = Nat
injective : {a, b : Type} ->
(a -> b) ->
Type
injective {a} {b} f = (x, y : a) ->
f x = f y ->
x = y
我正在使用Idris 1.3.1的解释器。
答案 0 :(得分:0)
您的代码对我来说很好。过去,我遇到not a terminator
错误时,几乎总是由于我犯了一些缩进错误。但是我不知道private
修饰符会发生什么变化,以使其适合您的情况。