有人能給我一個明確的區分潛在和清單類型系統嗎?潛類型和Manifest類型有什麼區別?
4
A
回答
5
請參閱Lambda終極版上的Anton van Straaten's post。它描述了Scheme中的潛在類型。
明顯類型將用於靜態類型語言,其中類型的術語是語法聲明的或可以在編譯時從其他此類術語推斷。
2
潛類型:一種不需要顯式類型聲明的打字風格。它與duck typing,dynamic typing和type inference有關。您可以使用Python,Lisp,Haskell等語言查看這些內容。
清單類型:明確標識所有已聲明變量的類型。像C,C++和Java這樣的語言遵循這一點。
9
有時候,相同的概念在計算機科學的不同領域獨立發明。這是其中的一種情況。什麼計劃社會各界來電潛和清單打字,在世界其他地方調用隱含和明確打字。意思是完全一樣的:
在明確/清單打字,程序員必須明確寫下類型,因此類型在源代碼中成爲明顯。
暗含/潛在打字時,程序員不寫下類型。這些類型因此是隱含或潛在。
請注意,隱式與顯式類型的問題完全與例如動態與靜態輸入,強與弱輸入,聲音與不穩定輸入,安全與不安全輸入以及名義與結構與鴨子輸入。例如,Haskell隱含,強烈,靜態,健全,安全,結構類型化。
1
難以回答您的問題的部分原因是,這是一個活躍的研究領域。特別是,有一大羣人希望能夠混合使用打字和非打字的語言,並允許程序在某些部分輸入和某些部分不能輸入。
我聲稱目前還沒有廣泛的一致意見,最終會把什麼意義附加到術語「潛伏型」上。
但是,潛在類型和清單類型的問題與類型推斷的問題並不相同。
類型推斷是一種靜態類型語言,是指一種系統,它可以在沒有程序員幫助的情況下推導出程序術語的類型,通常使用hindley-milner風格類型的系統和統一。 Haskell和OCaml都有類型推斷。
相關問題
- 1. 泛型類型和泛型類型定義有什麼區別?
- 2. 選項類型和可空類型有什麼區別?
- 3. 有什麼區別擴展類型和類型
- 4. ASN.1枚舉類型和選擇類型有什麼區別?
- 5. 兩種(類型)值和類型(值)有什麼區別?
- 6. 複合類型和匿名類型有什麼區別?
- 7. 類型1和類型2模糊邏輯有什麼區別?
- 8. C++「類型推導」和Haskell「類型推論」有什麼區別?
- 9. Cython中numpy「類型標識符」和「類型」有什麼區別?
- 10. 類型定義和類型引用有什麼區別?
- 11. Haskell中的類型和數據類型有什麼區別?
- 12. 正常類型和匿名類型有什麼區別?
- 13. 類型轉換和類型斷言有什麼區別?
- 14. 裝配類型 - 有什麼區別
- 15. Rails數據類型有什麼區別?
- 16. 文檔類型有什麼區別
- 17. 將類型用作不同名稱和類型別名有什麼區別?
- 18. (類型)值和類型(值)之間的區別是什麼?
- 19. Haskell中的類型構造函數和java泛型類型有什麼區別?
- 20. 基元類和基元數據類型有什麼區別?
- 21. ruby中類的類型和超類的區別是什麼?
- 22. 對象類型和字典類型的映射對象有什麼區別
- 23. 委託類型和事件處理程序類型有什麼區別?
- 24. C#中值類型和引用類型之間有什麼區別?
- 25. 路徑依賴類型和依賴類型之間有什麼區別?
- 26. 「流類型」套接字和「數據報」套接字類型有什麼區別?
- 27. 有界通配符和類型參數有什麼區別?
- 28. Debug類和Trace類有什麼區別?
- 29. ConfigurationManager類和Settings類有什麼區別?
- 30. HostingEnvironment類和HttpRuntime類有什麼區別?
我不知道哈斯克爾,你能否說明哈斯克爾中那些類型的特徵? – unj2 2009-12-19 22:09:03
加1!但Haskell在結構上如何輸入? – 2015-01-25 11:29:31