On 01/17/2012 03:59 AM, Yitzchak Gale wrote:
and whenever E imports M qualified without an
import list, as in:
import qualified M as Q
then the following implied imports would be
added to E:
import qualified M.T as Q.T
import qualified M.S as Q.S
Rather, those should be added whether or not M is imported qualified.
For example, this is valid Haskell98:
import Numeric as Flumeric
main = print (Flumeric.showFloat 3.2 "")
I like the spirit of this proposal. Does it have the ability yet to
make packages with large APIs easier to use?
e.g.
http://code.haskell.org/gtk2hs/gtk/demo/graphic/Drawing.hs
The long lists of import statements can get much worse.
The existing remedies (e.g. re-export all the library's identifiers from
one module) lose some of the benefits (to readability of code that uses
the library) of having a module system.
What if export lists like
module M (module M.X) where import M.X
perhaps...
module M (module [qualified] M.X [as X]) where import M.X
could trigger similar behavior in importers as nested modules could.
What if in
module M(....)
import .X
the "import .X" was sugar for "import M.X as X" (or "as" something else
if you wrote an "as" clause explicitly).
I think module system improvements like you propose could be a good idea
(in general, rather than as a particularly good way to do records, and
it shouldn't hold up the type-based records proposal ^_^).
~Isaac
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users