import, supply, prefixed by, unprefixed, use


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

A quoted string containing the name of an OmniMark module.


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