了解GHC错误“绑定位置中的合格名称”

时间:2010-10-25 09:56:33

标签: haskell compiler-errors ghc

如果我使用类型类AModule创建模块Foo

module AModule where
class Foo a where
   bar :: a

并在另一个模块BModule导入AModule限定,并尝试将某些类型设为Foo的实例,即

module B where
import qualified AModule as A
instance A.Foo Int where
   A.bar = 0

GHC告诉我“绑定位置的合格名称:A.bar”。

根据我的理解,这与GHC ticket 3197有关,后者标记为已修复。我正在运行GHC 6.12.1并且仍然出现错误。我只是误解了一些事情吗?

1 个答案:

答案 0 :(得分:14)

您不需要实例声明中的A.(请参阅Haskell 98 report §4.3.2)。

以下编译6.12.3:

instance A.Foo Int where    -- # A. here
   bar = 0                  -- # no A. here

main = print (A.bar :: Int) -- # A. here