如何在Coq中创建元组并将其用作新的数据类型
我试图将以下ML代码作为Coq代码来编写:(此ML代码来自Ryheard和Burstall的《计算范畴理论》一书) 这就是我想到的:如何在Coq中创建元组并将其用作新的数据类型,coq,Coq,我试图将以下ML代码作为Coq代码来编写:(此ML代码来自Ryheard和Burstall的《计算范畴理论》一书) 这就是我想到的: Definition setArrow := (Set, Set -> Set, Set). Definition setSource (arrow: setArrow ): Set := match arrow with |(a,b,c) => a end. 这就是出现的错误: Error: The term "setA
Definition setArrow := (Set, Set -> Set, Set).
Definition setSource (arrow: setArrow ): Set :=
match arrow with
|(a,b,c) => a
end.
这就是出现的错误:
Error: The term "setArrow" has type "(Type * Type * Type)%type"
which should be Set, Prop or Type.
我不知道为什么会出现这个错误,但我认为这是由于我构造元组的方式造成的。我一直在阅读有关元组以及如何在Coq中构造新的非归纳数据类型的文档,但我还没有找到正确的方法。以下内容对我有用
Definition setArrow := (Set * (Set -> Set) * Set)%type.
Definition setSource (arrow: setArrow ): Set :=
match arrow with
|(a,b,c) => a
end.
*
是类型级别的Pair的构造函数,而,
是如何构建具体实例的
Definition setArrow := (Set * (Set -> Set) * Set)%type.
Definition setSource (arrow: setArrow ): Set :=
match arrow with
|(a,b,c) => a
end.
*
是类型级别的Pair的构造函数,而,
是构建具体实例的方式