DefModules have the following syntax:
(defmodule <symbol-name> [<string-comment>] [[<export-statement>]|[<import-statement>*]])
<export-statement> =
(export ?ALL)|
(export ?NONE)|
(export deftype|deftemplate ?ALL)|
(export deftype|deftemplate ?NONE)|
(export deftype|deftemplate <names>+)
<import-statement> =
(import <module-name> ?ALL)|
(import <module-name> ?NONE)|
(import <module-name> deftype|deftemplate ?ALL)|
(import <module-name> deftype|deftemplate ?NONE)|
(import <module-name> deftype|deftemplate <construct-names>+)
<construct-names> = (<template-name> | <deftype-name>*)
?ALL = literal, meaning to import/export all constructs of that type for the module
?NONE = literal, meaning to import/export NO constructs of that type for the module
Note: Brackets ([) and (]) define optional elements of the construct. The (|) character defines an or condition. An asterisk (*) defines zero or more of the preceding element (or disjunction of elements). A plus sign (+) defines one or more of the preceding element.