haskell - Haskell中的分类结构
问题描述
Hask
通常被认为是对象是类型而态射是函数的范畴。但是,我看到 Conor McBride (@pigworker) 警告不要Hask
多次使用 ( 1 , 2 , 3 ):
我不鼓励谈论“Hask 类别”,因为它会潜意识地限制您在 Haskell 编程中寻找其他类别结构。
请注意,我不喜欢使用“Hask”作为“Haskell 类型和函数的类别”的名称:我担心将一个类别标记为 Haskell 类别会产生不幸的副作用,使我们对其他类别结构的财富视而不见在 Haskell 编程中。这是一个陷阱。
不过,我希望人们不要称它为“Hask”:它可能会限制想象力。
我们可以在 Haskell 中看到哪些其他类别?
在他的一个回答中,他谈到了其中一些想法,但我想知道是否有人可以扩展它;我想知道是否还有更多的例子。
[...] 到处都有大量的分类结构,在更高的种类中肯定有大量的分类结构可用(可能但不一定)。我特别喜欢索引集合家族之间的函子。
解决方案
Haskell 中的约束也构成了一个类别。对象是约束,箭头表示“这个约束意味着另一个约束”。所以每个约束都暗示着它自己,并且在 and 之间有一个箭头,在Monad f
andApplicative f
之间Ord a
和andEq a
之间。Ord a
Ord [a]
它是一个细类,所以两个对象之间最多有一个箭头。
推荐阅读
- php - Laravel - 无法找到新页面(404 错误 - 未找到)
- git - 使用 git commit --reedit-message 时如何编辑提交日期?
- excel - 我们如何使用共享点列表授予 Excel 工作表中某些用户的访问权限
- sql - 父子关系更新
- tsql - 有条件的 T-SQL JOIN 表
- solr - 排名期间的字段读数不正确
- php - 在IIS上操作解压后提供静态文件
- xcode - 安装 Xcode 11 和 iOS 13 后无法访问 iPhone 设备
- javascript - 动态获取功能组件的 ref - ReactJS
- c# - centos7中net core 3的tcpclient无法收发数据