我从 Learnyouahaskell.com学习 Haskell。我在理解类型构造函数和数据构造函数方面有困难。例如,我真的不明白这两者之间的区别:
data Car = Car { company :: String
, model :: String
, year :: Int
} deriving (Show)
还有这个:
data Car a b c = Car { company :: a
, model :: b
, year :: c
} deriving (Show)
我理解第一种方法只是使用一个构造函数(Car
)来构建类型为 Car
的数据。我不太明白第二个。
此外,如何定义这样的数据类型:
data Color = Blue | Green | Red
能适应这一切吗?
根据我的理解,第三个例子(Color
)是一个可以处于三种状态的类型: Blue
、 Green
或 Red
。但是这与我对前两个例子的理解有冲突: 是否类型 Car
只能处于一种状态 Car
,这种状态可以使用各种参数来构建?如果是这样,那么第二个例子又是怎样的呢?
本质上,我正在寻找一个统一上述三个代码示例/构造的解释。