文章
Get Programming with Haskell-13
你将学习 Haskell 类型系统中的一个重要抽象——类型类(Type classes)。类型类允许你根据共享的行为对类型进行分组。乍一看,类型类类似于大多数面向对象编程语言中的接口。类型类声明了一个类型必须支持哪些函数,就像接口规定了一个类必须支持哪些方法一样。但类型类在 Haskell 中扮演的角色,比在 Java 或 C# 等语言中的接口更为重要。主要的区别是,当你深入学习 Haskell 时,你会发现类型类通常要求你以越来越强大的抽象形式进行思考。在许多方面,类型类是 Haskell 编程的核心。
# 类型类
## 1. 进一步探索类型
到目前为止,你已经看到了一些类型签名,甚至自己构建了一些非平凡的类型。学习各种 Haskell 类型的最佳方式之一是使用 GHCi 中的 `:t`(或更详细的 `:type`)命令来检查你在实际编程中遇到的函数类型。当你第一次编写 `simple` 函数时,你是没有类型签名的:
`simple x = x`
如果你想知道函数类型是什么,可以在GHCi中使用`:t`

你也可以对lambda版本的simple做同样的事情:

如果你以这种方式开始探索类型,你将几乎立刻遇到一些你还没见过的内容。以加法为例:

尽管你已经花了这么多时间在类型上,像加法这样简单的操作仍然让你感到困惑!其中最大的谜团就是 `Num a =>` 这一部分。