为什么Haskell数据构造函数不需要原语?

我是 Haskell 编程和学习类型系统的新手,并且无法掌握空数据构造函数的基础。

以以下为例:

data Color = Red | Green | Blue | Indigo | Violet deriving Show

genColor:: Color
genColor = Red 

根据我的理解,Red、Green、Blue .. 是空数据构造函数,在使用时会构造“颜色”。

我无法理解的是,在传统的 OOP 语言中,您必须指定类型底层的原始类型——例如。颜色是否是字符串、整数、浮点数等。

在 Haskell 中,上面的代码运行得很好,为什么不需要呢?像这样构建类型系统的基本原理是什么?谢谢,所有帮助将不胜感激:)

回答

我想起一个极好的1个由亚历克西斯王的博客文章:类型为公理。它将您假设的减法视角(“我定义了一个枚举类型来限制变量可能采用的整数值集,并为清晰起见给出这些整数名称”)与代数数据类型真正涉及的加法视角( “既然我在定义一个全新的类型,我也必须定义一个全新的价值来适应它,它与任何其他类型的价值没有特别的关系”)。


1冗余,因为她所有的博客文章都很棒


以上是为什么Haskell数据构造函数不需要原语?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>