跨编程语言,我遇到过类似的 composite types不同的名字:
人们经常使用术语 词汇类型 ,
但是我从来没有看到过什么定义了类型的“词汇”。
这个术语有松散的定义吗?
类型理论和其他编程语言对词汇类型有什么看法?
以上都是词汇类型吗?还有更多吗?
最佳答案
我对与编程和词汇类型有关的词汇的理解是赋予某些对象具有明确含义的属性。
以下是 Haskell 中的一些示例:
考虑 Optional
/Maybe
type 和一个纯函数,它接受 Web 服务器的 HTTP 回复并提取回复的代码。
getCode :: String -> Int
现在假设当我们运行这个函数时,我们不知道响应是否成功——代码可能根本不存在。我们如何表示缺少代码的情况?我们可以分配一些人工值
-1
或 0
或者我们可以将整个函数类型更改为: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/