| Hugs98-March99
| treats wrongly the modularity in the following example.
|
| --------------------------------------------
| module F_ (f,g) where {f = 'f'; g = 'g'}
|
| module F (h)
| where
| import qualified F_ (a)
|
| h = F_.g
| --------------------------------------------
|
|
| * It does not notice that `a' is not in F_ export.
|
| * After changing to `import ()', `import qualified ()'
| Hugs still imports g from F_ to F and considers h as defined.
Yes, this behavior is one of the known differences between Hugs and
the Haskell report, and is actually described in the user manual (the
relevant fragment from the Hugs 1.4 manual is attached below). Initial
releases of Hugs 98 will behave in the same way (and hence will have the
same comment in the user manual). For simple uses, the module system in
Hugs 98 behaves just like the Haskell report says it should. However,
the module system is probably Hugs 98's weakest area of conformance with
the Haskell report, and this is easily noticed with more sophisticated uses
of modules.
All the best,
Mark
-------
We ignore entity lists in qualified imports (but unqualified
imports are treated correctly). For example, you can write:
import qualified Prelude ( foo )
even though foo is not exported from the Prelude and you can
write:
module M() where
import qualified Prelude () -- import nothing
x = Prelude.length "abcd"