2010-10-25 6 views
8

Wenn ich ein Modul AModule mit einem typeclass Foo, erstellenVerständnis GHC Fehler „Qualified Name in Bindungsposition“

module AModule where 
class Foo a where 
    bar :: a 

und in einem anderen Modul BModule Import AModule qualifiziert und versuchen, irgendeine Art eine Instanz von Foo zu machen, dh

GHC sagt mir "Qualifizierter Name in bindender Position: A.bar".

Von dem, was ich verstehe, bezieht sich das auf GHC ticket 3197, die als fest gekennzeichnet ist. Ich verwende GHC 6.12.1 und erhalte immer noch den Fehler. Versteh ich hier nur etwas falsch?

Antwort

14

Sie benötigen die A. nicht innerhalb der Instanzdeklaration (siehe Haskell 98 report §4.3.2).

Folgende compiliert auf 6.12.3:

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

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

Ah, natürlich. Ich habe einen "nicht im Umfang", der durch eine andere Zeile verursacht wurde, falsch gelesen, um zu denken, dass ich das "A." brauchte. Vielen Dank! – gspr