
Two remarks on what Malcolm wrote:
I don't see the need to bring whole namespaces into scope. And even if I did, I wouldn't overload the standard import syntax to mean namespace scoping as well -
Well, the syntax *is* overloaded already :-) `import' serves two purposes: a) declare what modules you want to access b) declare how you want to name entities from these modules. Java drops a) - technically, you could write Java programs without any `import's, by using fully qualified names everywhere. Ada separates a) and b) - it has `with' for a) and `use' for b). (*) Why do we want a) for Haskell? Sure it's easier to implement (but that alone would be a bad excuse) the main reason is that it serves to document the code (namely, its dependecy on other modules), and allows to enforce some coding standards. (**) (*) The advantage (in my eyes) of having these concerns separated is that you can have local `use' statements, i. e. at the top of your module, you have to `with' all packages that you want to access, but you can write `use' statements (that bring their namespace into scope) not only at the top level, but also at local binding groups. (Is this the same as `open' in ML? - I confess I don't know ML.) (**) I use this feature in the following way: students send me their homework in the form of a Haskell module that contains a definition like solution :: Push_Down_Automaton solution = Push_Down_Automaton { states = .., transitions = .., .. } and I then (automatically) run a test program that imports their module. Of course I want to be sure that they don't do some hidden IO stuff and wipe my hard disk - but this is nicely ensured by Haskell's type and module system: the typechecker verifies that the type of `solution' is pure (and not IO something), and I can easily check textually that they don't `import IOExts', which would allow `unsafePerformIO'. (However, I can't simply remove hugs/lib/exts/IOExts.hs because `runhugs' wants it - I don't really see why?) Yes I see that this doesn't necessarily advance the discussion of the standard library layout. -- -- Johannes Waldmann ---- http://www.informatik.uni-leipzig.de/~joe/ -- -- joe@informatik.uni-leipzig.de -- phone/fax (+49) 341 9732 204/252 --