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

时间:2016-07-20 02:33:52

标签: types functional-programming programming-languages category-theory type-theory

在编程语言中,我遇到了类似composite types的不同名称:

  1. Optional / Maybe
  2. Any
  3. Variant / Sum
  4. Record / Product
  5. 人们经常使用术语词汇类型
    然而,我从未见过什么是“词汇”类型的定义。

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

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

1 个答案:

答案 0 :(得分:3)

我对关于编程和词汇类型的词汇的理解通常是某些对象具有明确定义的属性。

以下是Haskell中的一些示例:

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

getCode :: String -> Int

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

getCode :: String -> Maybe Int

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

Haskell中的

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