当我被卡住时,我才刚刚开始玩 Haskell。
我正在尝试使我的新数据类型(我们称之为MyType
)类的实例Read
。Mytype
是一个类型构造函数,所以它需要另一个类型作为参数。我想写这种代码
instance (Read a) => Read (MyType a) where
readsPrec _ r = [foo (read r :: a ), r]
但它给了我以下错误
Could not deduce (Read a2) arising from a use of `read' from the context (Read a).
我认为既然 a isReadable
我可以推断它,但显然我错了。有任何想法吗?
编辑: 我已将以前的代码更改为
readsPrec _ r = [foo (read r :: a ), ""]
所以如果我输入:read "myString" :: MyType a
它工作得很好。现在我希望如果我read "myString"
在上下文中使用,我不应该指定要读取的类型。但问题是
bar (read myString) a
其中bar:: MyType a -> a -> MyType a
,我得到了
Ambiguos 变量类型。
有没有可能做这样的事情而不会出现这种错误?
我希望现在更清楚了,我正在尝试简化代码,但我希望我没有遗漏任何重要的内容。