gpt4 book ai didi

haskell - 创建数据类型时派生意味着什么?

转载 作者:行者123 更新时间:2023-12-02 07:24:03 26 4
gpt4 key购买 nike

假设我们看:

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)

“导出(Show,Eq)”是什么意思?我有时只看到“推导(显示)”。

最佳答案

deriving关键字自动“派生”某些类型类的实现。这仅适用于某些内置类型类(包括 ShowEq )。

Show实例 deriving creates 将构造函数的名称生成为字符串,如果构造函数采用任何参数,则生成 show 的结果调用每个参数,用逗号分隔并用括号括起来。

所以对于你的类型 deriving Show将等同于以下实例:

instance Show Quadrants where
show Origin = "Origin"
show Quadrant_I = "Quadrant_I"
show Quadrant_II = "Quadrant_II"
...

同样派生Eq如果两个值是使用相同的构造函数和相同的参数创建的,则 instance 认为这两个值相等。所以对于你的类型是:

instance Eq Quadrants where
Origin == Origin = True
Quadrant_I == Quadrant_I = True
Quadrant_II == Quadrant_II = True
...
_ == _ = False

如您所见,使用 deriving可以节省相当多的代码。

关于haskell - 创建数据类型时派生意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36014205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com