根据 https://en.wikibooks.org/wiki/Haskell/Category_theory#Translating_categorical_concepts_into_Haskell,在Haskell编程语言中
59.2.2 将分类概念翻译成Haskell。
我们在类别
Hask
及其子类别中工作。对象是类型。
态射是函数。
采用一个类型并返回另一个类型的事物是类型 构造 函数。
接受一个函数并返回另一个函数的东西是 高阶函数。
类型类,以及它们提供的多态性,使一个很好的 捕捉在范畴论中事物往往是事实的方法 一次在多个对象上定义。
类型类在范畴论中表示为什么概念?作为Hask
的子类别?
根据Dominic Orchard的说法,typeclasses对应于Hask的子类别:
单个参数类型类的实例可以解释为描述一组类型的成员(或多参数类型类的类型关系)。在类型签名中,受类型类约束约束的通用量化类型变量表示作为类成员的类型集合。例如,对于
Eq
类,以下类型签名描述了存在Eq
实例的类型集合:Eq a => a
Eq
的成员是Hask对象的子集合。同样,类型:(Eq a, Eq b) => (a -> b)
表示作为
Eq
成员的对象子集合中对象之间的Hask映射的态射的子集合。因此,Eq
类定义了Hask的一个Eq
子类别,其中包含上述对象和态射的子集合。