2010-10-25 22 views
8

Nếu tôi tạo ra một mô-đun AModule với một typeclass Foo,Hiểu lỗi GHC "Qualified tên trong ràng buộc vị trí"

module AModule where 
class Foo a where 
    bar :: a 

và trong mô-đun khác BModule nhập khẩu AModule có trình độ và cố gắng làm cho một số loại một thể hiện của Foo, tức là

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

GHC cho tôi biết "Tên đủ điều kiện ở vị trí ràng buộc: A.bar".

Từ những gì tôi hiểu, điều này có liên quan đến GHC ticket 3197, được gắn nhãn là cố định. Tôi đang chạy GHC 6.12.1 và vẫn gặp lỗi. Tôi chỉ hiểu lầm điều gì đó ở đây?

Trả lời

14

Bạn không cần số A. bên trong tuyên bố cá thể (Xem Haskell 98 report §4.3.2).

Các biên dịch sau trên 6.12.3:

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

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

Ah, tất nhiên. Tôi hiểu sai "không nằm trong phạm vi" gây ra bởi một dòng khác để nghĩ rằng tôi cần 'A.'. Cảm ơn nhiều! – gspr

Các vấn đề liên quan