在 Haskell tutorial, 我看到这样的表达
data Vector a = Vector a a a deriving (Show)
可能不一样,但非常相似。我有点困惑。谁能解释一下它在做什么吗?
最佳答案
data Vector a = MkVector a a a
为任何类型a
定义参数化数据类型Vector a
。
它还为我们定义了一种创建该类型值的方法:使用带有三个相同类型参数的数据构造函数 MkVector
。
对于任何类型 a
,使用三个 a
类型值调用 MkVector
会生成 Vector a
类型的值>。例如,
let a :: Int ; a = 1 ; v = MkVector a 3 4 in v :: Vector Int
let a :: Float ; a = 1 ; v = MkVector a 3 4 in v :: Vector Float
碰巧我们也可以使用与类型 Vector
中相同的名称作为数据构造函数的名称。一开始这可能会令人困惑。
关于haskell - 类型构造函数可以与值构造函数相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51447920/