Hask
通常被认为是其对象是类型而且态射是函数的类别。
但是,我已经看到Conor McBride(@pigworker)警告多次使用Hask
(1,2,3):
我不鼓励谈论Hask类别"因为它潜意识地阻止你在Haskell编程中寻找其他分类结构。
注意,我不喜欢使用" Hask"作为Haskell类型和函数的类别的名称":我担心将一个类别标记为Haskell类别会带来令人遗憾的副作用,使我们对Haskell编程中的其他分类结构的财富感到盲目。这是一个陷阱。
我希望人们不会称它为“Hask"”,但它有可能限制想象力。
我们在Haskell中可以看到哪些其他类别?
在one of his answers中,他触及了其中的一些想法,但我想知道是否有人能够扩展它;我想知道是否还有更多的例子。
[...]潜伏着无处不在的大量分类结构,当然有更多类别的分类结构(可能但不一定)。我特别喜欢索引族集之间的仿函数。
答案 0 :(得分:6)
Haskell also form a category中的约束。对象是约束,箭头表示"this constraint implies this other constraint"。因此,每个约束都意味着自己,并且Monad f
和Applicative f
之间,Ord a
和Eq a
之间以及Ord a
和Ord [a]
之间都有一个箭头。< / p>
它是thin category,因此两个对象之间最多只有一个箭头。
答案 1 :(得分:4)
加布里埃尔·冈萨雷斯(Gabriel Gonzalez)在博客中写到了这一点。这是一篇这样的帖子: http://www.haskellforall.com/2012/08/the-category-design-pattern.html
在其中,他称Hask为“功能类别”,并且还讨论了“Kleisli类别”和“管道类别”。这些都是Haskell中类别类型类的实例的示例。 Haskell中的Category类型类是您可以在Haskell中找到的类别的子集。
答案 2 :(得分:2)
我曾经上传了一个教育套餐,演示了一个例子。我叫它MHask。
http://hackage.haskell.org/package/MHask
从hackage页面复制:
MHask是
的类别