繁体   English   中英

检查cnat。 并得到类型返回

[英]Check cnat. and got Type return

全部

我试图理解 SF-LF 书 chp4 中提到的教堂数字。

Definition cnat := forall X : Type, (X -> X) -> X -> X.
Definition one : cnat :=
  fun (X : Type) (f : X -> X) (x : X) => f x.
Check cnat.
Check one.

我得到

cnat
     : Type
one
     : cnat

似乎cnat是某种类型,同时还有function。 怎么可能既是type又是function? 任何人都可以帮助解释一下吗?

forall (X: Type), ”语法是一种从X参数化的类型形成类型的方法。 forall (X: Type), (X -> X) -> X -> X一种函数类型,给定类型X会产生一个类型为(X -> X) -> X -> X的值(即本身就是一个函数)。

fun (X: Type) => ” 语法是一种从X参数化的术语形成 function 的方法。 fun (X: Type) (f: X -> X) (x: X) => fx一个 function ,给定X类型会产生 function fun (f: X -> X) (x: X) => fx (它本身就是一个函数)。

funforall的共同点是它们涉及binders ,例如(X: Type) (也像(f: X -> X) , (x: X) )。 fun是一种涉及绑定器以形成函数的构造,但并非所有涉及绑定器的构造都形成函数: forall是一种涉及绑定器以形成类型的构造。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM