فهم خطأ GHC "الاسم المؤهل في وضع الربط"
-
26-09-2019 - |
سؤال
إذا قمت بإنشاء وحدة نمطية AModule
مع typeclass 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 3197, ، والتي تم تصنيفها على أنها ثابتة. أنا أقوم بتشغيل GHC 6.12.1 وما زلت أحصل على الخطأ. هل أنا فقط أسيء فهم شيء هنا؟
المحلول
أنت لا تحتاج إلى A.
داخل إعلان المثيل (انظر تقرير هاسكل 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
لا تنتمي إلى StackOverflow