[英]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
(它本身就是一個函數)。
fun
和forall
的共同點是它們涉及binders ,例如(X: Type)
(也像(f: X -> X)
, (x: X)
)。 fun
是一種涉及綁定器以形成函數的構造,但並非所有涉及綁定器的構造都形成函數: forall
是一種涉及綁定器以形成類型的構造。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.