我不认为这是一个错误,但我有点困惑为什么这不起作用。一个额外的问题是为什么它提到变量 e?没有变量 e。
Prelude> :m +Control.Exception Prelude Control.Exception> 句柄 (\_-> return "err") 未定义 <交互式>:1:0: 约束中的模糊类型变量“e”: `异常 e' 由在 <interactive>:1:0-35 处使用 `handle' 引起 可能的修复:添加修复这些类型变量的类型签名 Prelude Control.Exception>
显然它在 ghci 6.8 中运行良好,我使用的是 6.10.1。
编辑:我已经最小化了代码。我希望在 6.8 和 6.10 中都有相同的结果
class C a
foo :: C a => (a -> Int)-> Int
foo _ = 1
arg :: C a => a -> Int
arg _ = 2
bar :: Int
bar = foo arg
试图编译它:
[1 of 1] 编译 Main(/tmp/foo.hs,解释) /tmp/foo.hs:12:10: 约束中的模糊类型变量“a”: 由在 /tmp/foo.hs:12:10-12 使用 `arg' 引起的 `C a' 可能的修复:添加修复这些类型变量的类型签名 失败,加载模块:无。 Prelude Control.Exception>