【发布时间】:2012-11-13 09:16:42
【问题描述】:
我认为 Haskell 类型推断有问题。
我创建了自己的数据类型并将其作为Read 类的实例。我的数据类型其实是取另一个类型作为参数,它是一个类型参数。
我重新定义了readPresc,以解析字符串并返回我的新数据。当我写:
read "string that represent MyType a" :: MyType a
它工作得非常好(至少它达到了我的预期)
现在我有一个函数,我们称之为insert,它接受a、MyType a 类型的元素,并返回一个新的MyTape a。
insert :: a -> MyType a -> a
但是当我写的时候:
insert 3 "string that rapresent MyType Int"
我收到了Ambigous type。
如何告诉haskell 推断read 与插入参数的类型相同?
【问题讨论】:
-
你的意思是
insert 3 (read "string representation")? -
另外,你能澄清一下吗?
read "bla blah blah" :: MyType暗示MyType是一个类型,但insert :: a -> MyType a -> a暗示MyType是一个类型构造函数。