我刚刚开始使用Haskell,我一直在尝试创建一个简单的Number数据类型,它有一个像这样的Int:
data Number
= Num Int
deriving (Read, Show)
然后我试图做read "1234" :: Number
希望能提供类似Num 1234
的东西,但我似乎得到了一个“Exception:Prelude.read:no parse”。还有其他我缺少的东西吗?
答案 0 :(得分:9)
您派生的实例会给read "Num 1234" = Num 1234
。
这是Read
实例所期望的行为,但如果您真的想要不同的行为,则必须自己为read
实施Number
(您可以尽管可以重复使用Int
。