GHC 7.6.3扩展OverloadedString不完全推断IsString。为什么?或者我错过了什么?
是一些代码无奈之举我试图编译
误差
No instance for (Data.String.IsString t3)
arising from the literal `"meh"'
The type variable `t3' is ambiguous
我不明白。这是一个文字。什么是模糊的?为什么它不能推断这是一个字符串?
这是在呼叫未来像
foo bar "meh"
其中foo
不需要第二个参数是什么特别的(它必须满足一些typeclass
,以及它为特定的连击是越来越。 )
我会注意到,我可以通过改变呼叫解决这个错误
foo bar ("meh" :: String)
这显然是疯了。
- 编辑
也许它无关overloadedStrings
我可以 “复制” 这个错误只是
data B a where Foo :: a -> B A
然后在GHCI写简单
Foo "ok"
(显然失败,因为我没有获得Show
,但为什么我也得到
No instance for (Data.String.IsString a0) arising from the literal `"ok"' The type variable `a0' is ambiguous ...
?这里发生了什么?这是什么意思?)
由于没有足够的信息来推断该类型:'类型变量''t3'是不明确的'。你所描述的是一种典型的情况,即返回类型是多态的*和*参数类型也是多态的,所以GHC没有办法确定你实际需要什么类型。 – Rufflewind 2014-10-18 13:55:58
您是否可以将问题重现为显示它的单一来源?因为你可以在这里看到一切工作https://www.fpcomplete.com/user/k_bx/untitled – 2014-10-18 14:07:57