Re: More feedback on Haskell 98 modules from the Programatica Team
"Simon Peyton-Jones" <simonpj@microsoft.com> writes:
Wrong, and I hope that the report is already unambiguous on this point. If you say 'import A' then you can refer to "A.f" or "f" but definitely not "B.f". The module qualifier is the name of the module named in the import statement (or its "as" alias), not the name of the module where it was originally defined.
I tried this with GHC (files below), and it doesn't work the way you imply. I.e. a module export is exported with its qualification. I guess this is a bug, then? main.hs: ------------ import A main = putStr "foo" A.hs: ---------- module A (a, module B) where import qualified B a :: Int a = 3 B.hs: ---------- module B where b :: Int b = 1 transcript: ---------- Prelude> :l main Compiling B ( B.hs, interpreted ) Compiling A ( A.hs, interpreted ) Compiling Main ( main.hs, interpreted ) Ok, modules loaded: Main, A, B. (0.18 secs, 3408976 bytes) Main> b <no file>:0: Variable not in scope: `b' (0.00 secs, 0 bytes) Main> B.b 1 (0.01 secs, 0 bytes) Main> A.b <no file>:0: Variable not in scope: `A.b' (0.00 secs, 0 bytes) -kzm -- If I haven't seen further, it is by standing in the footprints of giants
participants (1)
-
Ketil Malde