declaration/definition
import file-name ((export? prefixed by prefix) | export? unprefixed | only)
( (export? use declared-name (as new-name)?)
|(export? use #conversion-functions)?
|(supply declared-name (as required-name)?))*
Argument definitions
Use import to import a module into the current module or program. Some or all of the
exported items in the module are processed as though they were declared
at the point of the import declaration.
If prefixed by is used, all exported items not specifically named
in a use clause have the given prefix prepended to their name in the
importing module or program.
If unprefixed is used, all exported items not specifically mentioned
in a use clause will be known in the importing program or module by
the name they were given in the module being imported.
If only is used, exported items not specifically mentioned in a
use clause are not imported.
You can choose to import specific functionality by means of a use clause with only.
You can rename imported items with a use clause. Avoid naming collisions by specifically re-naming imported items that
conflict with previously defined named items in the importing module or
program.
use #conversion-functions indicates that all of the exported
conversion functions defined in a module should be exported. This is
the default behavior with prefixed by and unprefixed, and so is
only necessary when only has been specified.
Use supply clauses to provide items that the module has declared as
required. These are in effect parameters to the module.
You can re-export imported items by using export in the import declaration. Put export in front of prefixed by or unprefixed to re-export all imported items that have not been named in a use clause. Put it in front of use to re-export particular imported items.
; plain old import
import "my-module.xmd" unprefixed
; all imported items have "my." prepended except "write" has been renamed
import "my-module" prefixed by my.
use write as output
; supply a stream global (that the module requires), and only import the
;execute function
global stream this-stream
import "other-module.xmd" only
supply this-stream as shared-stream
use execute