范畴论中的什么概念可以用来表示类型类?

Tim*_*Tim 4 computer-science haskell programming-languages category-theory adhoc-polymorphism

在 Haskell 编程语言中,根据https://en.wikibooks.org/wiki/Haskell/Category_theory#Translated_categorical_concepts_into_Haskell

\n\n
\n

59.2.2 将分类概念翻译成 Haskell

\n\n
    \n
  1. 我们从事该类别的工作Hask我们在该类别及其子类别

  2. \n
  3. 对象是类型。

  4. \n
  5. 态射是函数。

  6. \n
  7. 接受一种类型并返回另一种类型的东西是 type\n 构造函数。

  8. \n
  9. 接受一个函数并返回另一个函数的东西是高阶函数。

  10. \n
  11. 类型类及其提供的多态性提供了一种很好的方式来捕获这样一个事实:在范畴论中,事物通常同时在多个对象上定义。

  12. \n
\n
\n\n

类型类表示范畴论中的什么概念?作为一个子类别Hask作为?

\n

Bar*_*ski 8

根据 Dominic Orchard 的说法,类型类对应于 Hask 的子类别:

单个参数类型类的实例可以解释为描述一组类型的成员(或多参数类型类的类型关系)。在类型签名中,受类型类约束约束的通用量化类型变量表示作为该类成员的类型的集合。例如,对于Eq类,以下类型签名描述了存在 实例的类型集合Eq

 Eq a => a
Run Code Online (Sandbox Code Playgroud)

的成员是HaskEq对象的子集合。同样,类型:

 (Eq a, Eq b) => (a -> b)
Run Code Online (Sandbox Code Playgroud)

表示作为 的成员的对象子集合中的对象之间的Hask映射的态射的子集合Eq。因此,该类使用上述对象和态射的子集合Eq定义了HaskEq的子类别。