从Prelude.read获取"no parse"



我刚开始使用Haskell,我一直在尝试制作一个简单的Number数据类型,它有一个类似这样的Int:

data Number
  = Num Int
  deriving (Read, Show)

然后我试着做read "1234" :: Number,希望它能给出类似Num 1234的结果,但我似乎得到了一个"Exception:Prelude.read:no parse"。我还缺少什么吗?

派生的实例将给出read "Num 1234" = Num 1234

这是Read实例所期望的行为,但如果您真的想要不同的行为,则必须自己为Number实现read(不过您可以重用Int的)。

最新更新