【发布时间】:2012-02-08 09:28:17
【问题描述】:
这似乎是合法的:
data MagazineInfo = Int String
deriving (Show)
我不确定是否有默认的数据构造函数,但是上面的代码可以编译。
为什么上面的 Haskell 是有效的,因为我没有明确指定值构造函数?
【问题讨论】:
-
如果您尝试通过编写选择器来使用此数据类型,您会注意到没有
Int可以退出...
标签: haskell
这似乎是合法的:
data MagazineInfo = Int String
deriving (Show)
我不确定是否有默认的数据构造函数,但是上面的代码可以编译。
为什么上面的 Haskell 是有效的,因为我没有明确指定值构造函数?
【问题讨论】:
Int 可以退出...
标签: haskell
那里确实有一个数据构造函数——它是Int。类型名称位于与数据构造函数不同的命名空间中,这就是为什么即使恰好有一个类型也名为 Int 的类型也不会出现错误。
【讨论】:
data MagazineInfo = MagazineInfo String
newtype 比data 更受欢迎。