Haskell中的分类结构

Dan*_*ață 9 haskell category-theory

Hask通常被认为是对象是类型的类别,而态射是函数.然而,我看到康纳尔麦克布莱德(@pigworker)警告反对使用Hask多次(1,2,3):

  • 我会劝阻谈论"Hask类别",因为它潜意识地阻止你在Haskell编程中寻找其他分类结构.

  • 注意,我不喜欢使用"Hask"作为"Haskell类型和函数类别"的名称:我担心将一个类别标记为Haskell类别会产生令人遗憾的副作用,使我们对其他分类结构的财富感到盲目在Haskell编程中.这是一个陷阱.

  • 我希望人们不要称它为"哈斯克",它可能会限制想象力.

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

他的一个答案中,他触及了其中的一些想法,但我想知道是否有人可以扩展它; 我想知道是否还有更多的例子.

[...]各地潜伏着大量的分类结构,当然有更多类别的分类结构(可能但不一定).我特别喜欢索引族集之间的仿函数.

dan*_*iaz 6

Haskell中的约束也构成了一个类别.对象是约束,箭头表示"此约束暗示另一个约束".所以每一个约束意味着本身,而且也之间的箭头Monad fApplicative f之间,Ord aEq a之间Ord aOrd [a].

它是一个很薄的类别,因此两个对象之间最多只有一个箭头.