| > Currently, you are permitted to write | > | > import A hiding (f) | > import B as A (f) | > | > and this means that everything exported from module A is visible, | > with the exception that function `f' is overridden by a different | > definition from module B. Here, a reference to `A.f' is resolved | > unambiguously to `B.f'. | | In my understanding of the report, this is not true. Quoting from section | 5.3 of the report | | "The hiding clause only applies to unqualified names. In the previous | example, the name M.C is brought into scope." | | Thus, in your example, the declaration import A hiding (f) will bring | A.f into scope and thus A.f is ambiguous! You are possibly correct, although both nhc98 and ghc actually resolve it in the manner I expected. However, if you are indeed correct, then we have an even stranger situation: import A (g) brings only A.g into scope, but import A hiding (f) brings both A.f and A.g into scope! So `hiding' is doing the opposite of hiding, and in fact _reveals_ names. Regards, Malcolm