程式語言中, type, typed, typing 有什麼區別?

時間 2021-06-03 18:13:12

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的整數冪大小還是比較常見...