什么是"词汇类型",有多少存在?

Tre*_*key 12 types type-theory programming-languages functional-programming category-theory

在编程语言中,我遇到过具有不同名称的类似复合类型:

  1. 可选/可能
  2. 任何
  3. 变体/总和
  4. 记录/产品

人们经常使用术语词汇类型,
但我从未见过什么是"词汇"类型的定义.

这个术语的定义是否松散?
类型理论和其他编程语言对词汇类型有什么看法?

一切都是词汇类型吗?还有更多吗?

小智 3

我对编程和词汇类型方面的词汇的理解通常是赋予某些对象属性以明确定义的含义。

以下是 Haskell 中的一些示例:

考虑Optional/ Maybetype 和一个纯函数,它接受 Web 服务器的 HTTP 回复并提取回复的代码。

getCode :: String -> Int
Run Code Online (Sandbox Code Playgroud)

现在假设当我们运行这个函数时,我们不知道响应是否成功 - 代码可能根本不存在。当代码丢失时我们如何表示?我们可以分配一些人为值-1,或者0我们可以将整个函数类型更改为此:

getCode :: String -> Maybe Int
Run Code Online (Sandbox Code Playgroud)

此外,在 Haskell 中还Maybe形成了MonadFunctorApplicativeFoldable一堆其他类型类。每个类型类都增加了额外的能力来操纵相关值,同时尊重它的存在/不存在。

ProductHaskell 中的/Sum类型表示为对 和Either a b。再次强调 - 通过ProductSum添加明确定义的含义来定义某些内容Product a b- 两个值都必须存在,Sum a b- 必须存在一个值并免费添加一堆法律。

  • 我认为这个答案稍微遗漏了一个问题,即“什么使类型成为“词汇”?”而不是“这些类型做什么?”。 (3认同)