繁体   English   中英

Haskell。 尽管我使用了派生,为什么读取 function 不适用于自定义数据类型?

[英]Haskell. Why does read function does not work with custom data type though I used deriving?

读取 function 无法与自定义数据类型一起正常工作。

data TwoInts = Int Int
 deriving (Read, Show)

conv :: String -> TwoInts
conv s = read s

当我用 ghci ghci conv.hs它加载正确,但是当我调用它conv "15 14"我得到以下错误:

*** Exception: Prelude.read: no parse

如建议的那样,您的数据类型:

data TwoInts = Int Int
 deriving (Read, Show)

描述了一个名为Int的构造函数,它接受类型Int 如果您要使用记录,也许这更清楚:

data TwoInts = Int { int :: Int}
 deriving (Read, Show)

评论中建议的解决方案是将您的构造函数命名为其他名称,例如,

data TwoInts = TwoInts Int Int
 deriving (Read, Show)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM