Понимание ошибки GHC «Квалифицированное имя в положении связывания»

StackOverflow https://stackoverflow.com/questions/4013464

  •  26-09-2019
  •  | 
  •  

Вопрос

Если я создаю модуль 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».

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

Это было полезно?

Решение

Вам не нужно 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top