| Even with option 2, there is scope for confusion. "Import" 
| without "qualified", imports both qualified and unqualified 
| names, but adding the word "qualified" doesn't make any 
| difference to the position of qualified names, but instead 
| silently fails to import unqualified names.

True

| There is still a 
| strange asymmetry, too. Whereas adding "qualified" to "import 
| Modname ( a, b, c)" doesn't change which entities are 
| imported, just the ability to refer to them by unqualified 
| names, adding qualified" to "import Modname hiding ( a, b, 
| c)" has the effect of importing everything that was previously hidden.

Not so.  I hope the Report now unambiguously states that 

        import M hiding (a,b,c)
        import qualified M hiding(a,b,c)

imports exactly the same entities (namely all that M exports
except a,b,c), only in the latter case only the qualified names are
brought into scope.

Can you suggest a way I could state it more clearly in the Report?

| Personally, I think the right solution is to import entire 
| modules (the exported parts) qualified, and optionally to 
| allow unqualified reference to some or all names, with a syntax like
|     import modid [as modid] [unqualifying ( [all except] 
| impspec] | all)
| 
| but it's probably too late for this.

Dead right!

Simon

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to