1樓:遊客賬戶0x0
type是型別,和term類似,是一系列元素的集合,
typed是term的性質,表示在某個型別系統下這個term可以被賦予型別。
typing是type + context,比如說HM之後principal type,沒有principal typing,但是STLC有。也就是說HM不能把「需要的最小free varianble context」也推導出來,而STLC可以。
2樓:黃玄
啊雖然我覺得 @Oling Cat 那樣翻也挺好的……但我覺得其實也可以直接從英文角度來理解:
type 就是型別的名詞,type system, type safety, typevar, typecon...
typed 是被動化的形容詞含義,比如 simply-typed, statically-typed, untyped, well-typed, ill-typed...
typing 是主動/使動下的形容詞/動名詞含義,比如 subtyping, typing rule, typing relation, typing derivation, typing context...
這種思路的好處主要是可以延伸到各種詞……
比如我覺得像 typecheck, typechecking 要翻出區別來就很麻煩(
3樓:Oling Cat
type 就是型別 T,可以看作乙個有相同性質的物件的集合,或者乙個空間。
term 叫做型別的項 t,記作 t : T,可以看作型別這個集合的元素,或型別空間的乙個點。
舉例來說,Nat 是自然數型別,可以看作自然數的集合,或者是只考慮自然數點的數軸這個空間,而 2 就是 Nat 型別的項,或者說自然數集合的元素,或者自然數軸空間上的點。
而當我們沒有前面的語境(context,或譯作上下文)時,單說 2 是沒有型別的,它可以是整數,可以是自然數,也可以實數,此時它是未定型的(untyped)。
當我們給出 2 : Nat 時,2 就是已定型的(typed),或譯「有型別的」「帶型別的」「型別化的」。此時在整個語境中,2 的型別是 Nat,而不是 Int 或 Real 什麼的。
而賦予(或確定)2 的型別為 Nat 的過程,就叫定型(typing),也就是 2 後面的 : Nat。
程式語言中內建型別是怎麼實現的?
Yunfei Lu 都有。一種語言,首先有基本型別,其實就是資料在記憶體的布局,方便表示不同種類的資料,例如整型和浮點是一定要有的,因為cpu的規範。再組合得到陣列,函式型別等,再發展出代數型別,然後包裝成介面 類 泛型等高階概念。基本型別在編譯器裡規定。至於標準庫中定義的型別,通常是某種組合的封裝...
所有的程式語言中,那個語言最難學 拋開演算法,資料結構 ?
MisT大野兔 1.機器語言 2.彙編,彙編裡個人感覺cisc 比如x86 比risc 比如mips 更難學一點 3.個人意見 高階語言裡面強型別比弱型別難學一點,靜態型別比動態型別難學一點,函式式程式設計比其他程式設計正規化難學一點。但主流的高階語言都已經足夠容易入門了。4.精通任何一門語言都是極...
程式語言中的取余是如何實現的
各種語言裡面的演算法不完全一樣。有的語言支援任意精度整數,難道它也用跟C同樣的演算法計算餘數?另外各種語言裡面關於負數的處理也不一樣。對於除數固定 編譯時已知 的取餘操作,編譯器完全可以把它優化掉,具體優化成什麼,你隨便拿個C編譯器試試就知道了。特別對於Hash表這種,使用2的整數冪大小還是比較常見...