[Haskell] Proposal: Relative Module Imports

S. Alexander Jacobson alex at alexjacobson.com
Tue May 3 17:12:56 EDT 2005


Problem: We need a way to simplify module imports.

Problem details:

* Hierarchical module names are getting really long (including a 
functional area, a package name, and a module name).

* People typically import multiple modules from areas close to each 
other in the hierarchical module namespace (especially in the case of 
intra-package imports).

* Long module names are required even for non-exposed modules because 
a program may contain only one module with a given name (regardless of 
its visibility).

Idea: Allow module relative imports in a manner that does not break 
any existing code.

Proposal:

* Use preceding dots to indicate that module name is relative
* Use from keyword to specify a different relative base.

Example:

  Dot relative syntax             Translation
  -------------------             -----------
  module Text.Space.Foo.M where   module Text.Space.Foo.M where
  import .M2                      import Text.Space.Foo.M2 as M2
  import ..Bar.Baz                import Text.Space.Bar.Baz as Bar.Baz
  import Data.Set                 import Data.Set
  from ...HaXML.XML
    import .Types                 import Text.HaXML.XML.Types as Types
    import .Escape                import Text.HaXML.XML.Escape as Escape
    import .Pretty                import Text.HaXML.XML.Pretty as Pretty

I believe that the proposed syntax is much more concise and readable 
than the current equivalent.

-Alex-

______________________________________________________________
S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com


More information about the Haskell mailing list