首页 > 解决方案 > Haskell中的分类结构

问题描述

Hask通常被认为是对象是类型而态射是函数的范畴。但是,我看到 Conor McBride (@pigworker) 警告不要Hask多次使用 ( 1 , 2 , 3 ):

  • 我不鼓励谈论“Hask 类别”,因为它会潜意识地限制您在 Haskell 编程中寻找其他类别结构。

  • 请注意,我不喜欢使用“Hask”作为“Haskell 类型和函数的类别”的名称:我担心将一个类别标记为 Haskell 类别会产生不幸的副作用,使我们对其他类别结构的财富视而不见在 Haskell 编程中。这是一个陷阱。

  • 不过,我希望人们不要称它为“Hask”:它可能会限制想象力。

我们可以在 Haskell 中看到哪些其他类别?

他的一个回答中,他谈到了其中一些想法,但我想知道是否有人可以扩展它;我想知道是否还有更多的例子。

[...] 到处都有大量的分类结构,在更高的种类中肯定有大量的分类结构可用(可能但不一定)。我特别喜欢索引集合家族之间的函子。

标签: haskellcategory-theory

解决方案


Haskell 中的约束也构成了一个类别。对象是约束,箭头表示“这个约束意味着另一个约束”。所以每个约束都暗示着它自己,并且在 and 之间有一个箭头,在Monad fandApplicative f之间Ord a和andEq a之间。Ord aOrd [a]

它是一个细类,所以两个对象之间最多有一个箭头。


推荐阅读