Понимание ошибки GHC "Квалифицированное имя в позиции привязки" - PullRequest
9 голосов
/ 25 октября 2010

Если я создаю модуль AModule с классом типов Foo,

module AModule where
class Foo a where
   bar :: a

и в другом модуле BModule import AModule квалифицирован и пытаюсь сделать некоторый тип экземпляром Foo, т.е.

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

GHC сообщает мне "Квалифицированное имя в позиции привязки: A.bar".

Насколько я понимаю, это связано с Билетом GHC 3197 , который помечен как фиксированный.Я использую GHC 6.12.1 и все еще получаю сообщение об ошибке.Я просто что-то недопонимаю здесь?

1 Ответ

15 голосов
/ 25 октября 2010

Вам не нужно A. внутри объявления экземпляра (см. Отчет Haskell 98 § 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
...