1樓:
不妨從邏輯的角度來看待這個問題:
給定自然數 n,要得到 0,1,..,n 這樣的集合 Fin (suc n),可以通過歸納定義的方式:
起始步驟:zero 是 Fin (suc n) 的成員歸納步驟:如果 m 是 Fin n 的成員,那麼 suc m 是 Fin (suc n) 的成員
也就是說,把 Fin n 的每個成員成員都加上 suc,再加上 zero,就得到了 Fin (s n)。
按照這個定義,我們可以直觀地看到 Fin n 是如何構成的:
Fin 1
zero
Fin 2
zero
suc zero
Fin 3
zero
suc zero
suc (suc zero)...
2樓:
我覺得在做型別訓練、用依賴型別的時候,使語言嚴謹化是很重要的。比如說在說 「(suc (i : Fin 1)) 是乙個 Fin 3 的 element 」在我看來就很奇怪 -- 這個term 都有free variable, 怎麼會是乙個"element"?
要列舉Fin 3的就按照Fin 3定義走啊,我就不寫typing derivation了:
zero : Fin (suc 2)
suc (zero ) : Fin (suc (suc 1))
suc (suc (zero )) : Fin (suc (suc (suc 0)))
這裡我把隱式引數顯示表達了,對理解有幫助 -- 比如 zero 就肯定不屬於 Fin 3 (因為它屬於Fin 1)。
你明顯看到型別層面的 和值層面的 是兩個不同的構造器。
至於為什麼沒有Fin 0, 跟著定義走: Fin n 是被定義為同構於/代表 , Fin 0 就代表空集,當然不該有構造器。所以你可以看到Fin n的每個值構造器最後返回的都是 Fin (suc n), 亦即沒法inhabit Fin 0。
3樓:parker liu
Fin的定義如下:
data Fin : → Set wherezero : → Fin (suc n)suc :
(i : Fin n) → Fin (suc n)從Fin的kind來看,這個型別的kind是乙個函式 ,意思是給定乙個kind為N的型別,可以得到乙個kind為Set 的型別。也就是說給乙個自然數n,可以得到乙個自然數n 大小的集合,也就是Fin n是乙個自然數n 大小的集合。
zero : Fin 1
而Fin 3 則是乙個大小為3 的集合,有如下三個元素:
zeroFin 3
suc zero : Fin 3suc (suc zero) : Fin 3最特殊的是Fin 0,是乙個大小為0 的集合,其中沒有元素,所以沒有值。
所以說Fin n 可以看成是集合 。以上。
如何理解 A B 中的 和 ?
紗彩 關於斷定助動詞。助動詞這個詞類的存在本身就有很大的爭議,圍繞它的爭論一直喋喋不休到現在。所以,這裡個人不再舊調重彈,而是打算另闢蹊徑,深入分析該結構的內部組成。拆開來看,就是兩部分 代入完整句 A B 中,其實會發現句子主體就是 A A存在 A以什麼樣的形式或狀態存在呢?A B A以B的狀態存...
如何理解和表達設計中的 精緻感 ?
Yolo 核心在於細節,大量的細節。不僅僅是精確的畫素,還有互動方式,文案,色彩等產品中的各個元素大量的深入細節處理,綜合表現設計的精緻感。使用者在使用產品時,總能發現大量的細節,超出使用者認知。甚至向使用者傳達了,設計的品質感。 輕輕地反對排名第一答案 畫素眼那個。哈蘇H5D的畫素是2億,而人眼是...
如何理解代數中的極限和餘極限?
何巨集健 如果你去仔細閱讀代數芽的例子你會發現微積分中的極限也就是algebra of germ 是極限的一種特殊情況。極限的要求是乙個poset 而極限是對這個範疇系統的 最簡代數資訊的提取 也就是說是這個系統的乙個 最佳估測 如果回到微積分的例子那麼範疇的極限就是對某個點滿足 無限接近 這個pa...