2010-10-25 15 views
8

अगर मैं एक मॉड्यूल एक typeclass Foo साथ AModule बनाने "स्थिति बंधन में योग्य नाम",समझौता GHC त्रुटि

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 ticket 3197 से संबंधित है, जिसे निश्चित के रूप में लेबल किया गया है। मैं जीएचसी 6.12.1 चला रहा हूं और अभी भी त्रुटि प्राप्त कर रहा हूं। क्या मैं यहाँ कुछ गलत समझ रहा हूं?

उत्तर

14

उदाहरण घोषणा के अंदर आपको A. की आवश्यकता नहीं है (Haskell 98 report §4.3.2 देखें)।

6.12.3 पर निम्नलिखित compiles:

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

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

आह, निश्चित रूप से। मुझे लगता है कि मुझे 'ए' की आवश्यकता है, मुझे लगता है कि एक अलग लाइन के कारण "गुंजाइश में नहीं" गलत है। बहुत बहुत धन्यवाद! – gspr