Hi! For whatever that is worth, my semantics agrees with Simon's point here, ie in the example code
module M( C(op1) ) where -- NB: op2 not exported class C a where op1 :: a->a op2 :: a->a module N where import M instance C Int where op1 = ... op2 = ... -- Is this ok? the method binding for op2 is not allowed. But then there *is* a scope issue with instance declarations. What about the following example: module M( C(..) ) where -- NB: both methods exported ... class C a where op1 :: a->a op2 :: a->a module N where import M hiding (op2) -- ... but op2 is not imported instance C Int where op1 = ... op2 = ... -- Is this ok? As far as I've understood, the current revision of the Report states that a 'hiding' clause affects the qualified names as well as the unqualified names. Then 'op2' is not visible either qualified or unqualified. So, should it be legal to make a method declaration for it? Cheers, /kff _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell