在编程语言中,我遇到了类似composite types的不同名称:
人们经常使用术语词汇类型,
然而,我从未见过什么是“词汇”类型的定义。
这个术语的定义是否松散?
类型理论和其他编程语言对词汇类型有什么看法?
一切都是词汇类型吗?还有更多吗?
答案 0 :(得分:3)
我对关于编程和词汇类型的词汇的理解通常是某些对象具有明确定义的属性。
以下是Haskell中的一些示例:
考虑Optional
/ Maybe
类型和一个纯函数,该函数接受Web服务器的HTTP回复并提取回复代码。
getCode :: String -> Int
现在假设我们运行此功能时,我们不知道响应是否成功 - 代码可能根本不存在。当代码丢失时,我们如何表示案例?我们可以指定一些人为值-1
或0
,或者我们可以将整个函数类型更改为:
getCode :: String -> Maybe Int
此外,Maybe
在Haskell中形成了Monad
,Functor
,Applicative
,Foldable
和一堆其他类型类。每个类型类都会增加额外的能力来操纵有问题的值,同时尊重它的存在/不存在。
Product
/ Sum
类型表示为对和Either a b
。再次 - 通过Product
或Sum
定义一些内容会增加一个明确定义的含义Product a b
- 两个值都必须存在,Sum a b
- 必须存在一个值并添加一堆定律免费。