加载中...

类型类(type class)是 Philip Wadler 与 Stephen Blott 于 1989 年为 Haskell 提出的特设多态(ad-hoc polymorphism)机制:类型类声明一组操作接口(如 Eq 的 ==、Ord 的比较、Show 的转字符串),各类型通过 instance 声明提供实现,编译器在调用处根据类型自动选择对应实例。
与面向对象接口不同,类型类的实例声明与类型定义分离,可为已有类型事后添加实现(孤儿实例受限制);支持基于返回类型的重载;实现上通常编译为隐式传递的「字典」参数,而非对象内嵌虚表。
Rust 的 trait、Scala 的 implicit/given、Swift 的 protocol(带条件遵从)、C++ 的 concepts 都直接或间接源自类型类思想。
类型类支撑了 Functor、Monad 等抽象层次极高的通用库设计,是 Haskell 生态的组织核心。

登录 后参与讨论
暂无讨论,来发表第一条评论吧