假设我们看:
data Quadrants = Origin |
Quadrant_I | Quadrant_II | Quadrant_III | Quadrant_IV |
X_Axis_Positive | X_Axis_Negative | Y_Axis_Positive | Y_Axis_Negative
deriving (Show, Eq)
"派生(显示,均衡)"是什么意思?我有时只看到"派生(显示)"。
deriving
关键字"派生"某些类型类的实现。这仅适用于某些内置类型类(包括 Show
和 Eq
)。
deriving
创建的Show
实例将构造函数的名称生成为字符串,如果构造函数接受任何参数,则生成show
每个参数的结果,用逗号分隔并用括号括起来。
因此,对于您的类型deriving Show
将等效于以下实例:
instance Show Quadrants where
show Origin = "Origin"
show Quadrant_I = "Quadrant_I"
show Quadrant_II = "Quadrant_II"
...
同样,如果两个值是使用相同的构造函数和相同的参数创建的,则派生Eq
实例认为这两个值相等。因此,对于您的类型,这将是:
instance Eq Quadrants where
Origin == Origin = True
Quadrant_I == Quadrant_I = True
Quadrant_II == Quadrant_II = True
...
_ == _ = False
如您所见,使用 deriving
可以节省相当多的代码。