Coq泛型中的花括号

Coq泛型中的花括号,coq,Coq,以下代码给出了一个错误: Inductive mylist {A : Set} : Set := | mylist_Nil | mylist_Cons : A -> mylist A -> mylist A. 错误是“集合”类型的“mylist A”不能应用于术语“A”:“集合”。 如果我将“{A:Set}”更改为(A:Set),那么它工作正常 花括号是什么意思?谢谢 通常,参数是用括号声明的。大括号用于隐式参数。隐式参数不像通常的那样传递给函数和类型声明;相反,Coq类型检查器试

以下代码给出了一个错误:

Inductive mylist {A : Set} : Set :=
| mylist_Nil
| mylist_Cons : A -> mylist A -> mylist A.
错误是“集合”类型的“mylist A”不能应用于术语“A”:“集合”。 如果我将“{A:Set}”更改为(A:Set),那么它工作正常


花括号是什么意思?谢谢

通常,参数是用括号声明的。大括号用于隐式参数。隐式参数不像通常的那样传递给函数和类型声明;相反,Coq类型检查器试图从上下文中找出它们应该是什么

您可以强制常量使用
@
符号显式获取所有参数,如下所示:
@mylist a

对于像
mylist
这样的泛型类型,Coq没有足够的上下文来推断
A
参数应该是什么,因此通常最好用括号显式声明这些参数

有更多关于隐式参数的信息