types - 什么是 "vocabulary types",存在多少?

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

跨编程语言,我遇到过类似的 composite types不同的名字:

  • Optional / Maybe
  • Any
  • Variant / Sum
  • Record / Product

  • 人们经常使用术语 词汇类型 ,
    但是我从来没有看到过什么定义了类型的“词汇”。

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

    以上都是词汇类型吗?还有更多吗?

    最佳答案

    我对与编程和词汇类型有关的词汇的理解是赋予某些对象具有明确含义的属性。

    以下是 Haskell 中的一些示例:

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

    getCode :: String -> Int
    

    现在假设当我们运行这个函数时,我们不知道响应是否成功——代码可能根本不存在。我们如何表示缺少代码的情况?我们可以分配一些人工值 -10或者我们可以将整个函数类型更改为:
    getCode :: String -> Maybe Int
    

    另外Maybe形成一个 Monad , Functor , Applicative , Foldable以及 Haskell 中的一堆其他类型类。每个类型类都增加了额外的能力来操纵有问题的值,同时尊重它的存在/不存在。
    Product/Sum Haskell 中的类型表示为对和 Either a b .再次 - 通过 Product 定义一些东西或 Sum添加明确定义的含义 Product a b - 两个值都必须存在,Sum a b - 必须存在一个值并免费添加一堆法律。

    关于types - 什么是 "vocabulary types",存在多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38471380/

    相关文章:

    list - 在列表中查找不在第二个列表中的元素(在scala中)

    java - 面向对象编程中的访问修饰符

    parsing - 是什么让 Ometa 与众不同?

    c++ - 编译成 C/C++ 源代码的编程语言?

    Haskell 处理枚举的方法

    functional-programming - "Closures are poor man' s 对象,反之亦然”-这是什么意思?

    c# - 函数式编程中的对象 - 不变性

    MySQL 位数据类型存储空间

    C++14 'auto' 可以获取函数返回类型,还需要std::result_of<>吗?

    powershell - 如何指定哈希表的数据类型?