Once the module is created, the module (or list of modules) given as Imports is imported.
The list Exports must contain valid export specifications as described in export/1. It defines the initial part of the module's interface, subsequent export and reexport directives can add to that.
Note that modules are normally created by the compiler when it encounters a module/1 or module/3 directive. The create_module/3 predicate however creates modules dynamically at runtime. The intended applications are therefore mainly source processing tools, e.g. compilers and loaders, or programs that need a clean name space to store code and data.
The system does not allow the atom [] to be used as a module name! If [] is given as the Imports argument, it indicates the empty list, rather than a module with name [].
Success:
    [eclipse 1]: create_module(m, [data/1], []).
    yes.
    [eclipse 2]: compile_term(data(99))@m.
    yes.
    [eclipse 3]: m:data(X).
    X = 99
    yes.
    [eclipse 4]: erase_module(m).
    yes.
Error:
    create_module(M, [], []).                (Error 4).
    create_module(m, _, _).                  (Error 4).
    create_module(m, [], library(iso)).      (Error 5).
    create_module(m,[],[]), create_module(m,[],[]). (Error 97).