11

跨編程語言,我已經遇到了類似的composite types以不同的名稱:什麼是「詞彙類型」,存在多少?

  1. Optional/Maybe
  2. Any
  3. Variant/Sum
  4. Record/Product

人們經常使用的術語詞彙類別
但我從來沒有看到什麼使一個類型的「詞彙」的定義。

該術語是否有鬆散的定義?
類型理論和其他編程語言對詞彙類型有什麼要說的?

是否超過了詞彙類型?還有更多嗎?

+8

您可以給出上下文中使用的術語「詞彙類型」的任何鏈接/引用嗎?我從來沒有見過它,我很好奇它是否有助於提供更多的答案背景。這些主要是[代數數據類型](https://en.wikipedia.org/wiki/Algebraic_data_type)。 –

+0

正如Jon所說,你在哪裏看到了與這些術語相關的詞彙類型?不是我遇到過的,即使在網上搜索它後 – Dijkgraaf

+0

告訴我們的參考,但我認爲這意味着有不同類型的詞彙表來指代一個特定的類型! –

回答

3

我對編程和詞彙類型方面的詞彙的理解一般來說就是賦予某些具有明確含義的對象屬性。

這裏有一些例子在Haskell:

考慮Optional/Maybe型和純函數,需要一個Web服務器的HTTP回覆,回覆中提取的代碼。

getCode :: String -> Int 

現在假設我們運行這個函數的時候,我們不知道響應是否成功 - 代碼可能根本不存在。代碼丟失時我們如何表示案例?我們可以將部分人工值-10或者我們可以改變全功能型到這一點:

getCode :: String -> Maybe Int 

此外Maybe形成MonadFunctorApplicativeFoldable和Haskell的很多其他的類型類。每個類型類別都會增加額外的能力來處理有問題的值,同時尊重它的存在/不存在。

Product/Sum在Haskell中的類型表示爲成對和Either a b。再次 - 通過ProductSum定義某些內容會增加一個明確定義的含義Product a b - 兩個值都必須存在,Sum a b - 必須存在一個值並添加一組免費的規則。

+0

我認爲這個答案略微缺少了這個問題,它是什麼使得一個類型的詞彙「?」與「這些類型做了什麼?」相反。 – Alec

+0

'明確的含義是'。對於那些熟悉數學/編程術語的人來說,「交換和關聯中的這個操作」講述的操作與「事物的類型」是「可能的東西」一樣多。 – user8242965

相關問題