haskell - 为什么 haskell 数据构造函数不需要原语?
问题描述
我是haskell编程和学习类型系统的新手,并且无法掌握空数据构造函数的基础。
举个例子:
data Color = Red | Green | Blue | Indigo | Violet deriving Show
genColor:: Color
genColor = Red
据我了解,Red、Green、Blue.. 是无效数据构造函数,在使用时会构造“颜色”。
我难以理解的是,在传统的 OOP 语言中,您必须指定类型底层的原语——例如。颜色是否是字符串、整数、浮点数等。
在 Haskell 中,上面的代码运行得非常好,为什么不需要呢?像这样构建类型系统的基本原理是什么?谢谢,所有帮助将不胜感激:)
解决方案
我想起了Alexis King 的一篇出色的博客文章:Types as Axioms。它将您假设的减法观点(“我定义了一个枚举类型以限制变量可能采用的整数值的集合,并为清楚起见给这些整数命名”)与代数数据类型真正涉及的加法观点( “既然我在定义一个全新的类型,我也必须定义全新的价值观来居住它,这些价值观与任何其他类型的价值观都没有特别的关系”)。
1冗余,因为她所有的博客文章都很棒
推荐阅读
- python - 使用 pandas 合并将国家与比赛行上的每个网球运动员联系起来
- spring - 在 Spring Boot 中未加载 logback JNDI 选择器
- reactjs - 在 React-admin 列表视图中使用输入
- jsp - 找到一个带有 GET 参数的 .jsp 网站的 URL,其中输入的编码可能类似于 base64
- laravel - 未找到类别
- c# - iis 上的 web api 主机接收 zip 问题
- sql - 雪花为每条记录添加具有唯一随机值的新列
- javascript - 使用 JQuery 定位多个类时,必须使用“each()”吗?最佳实践
- python - 如何拆分 CSV 文件中的值
- image - Flutter - 图像到字符串base64?