[ Modules | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

# create_module(+Module)

Create a module at runtime

Module
  Atom.

## Description

create_module/1 creates the given module if it does not exist yet. If the module already exists, an exception is raised (error 97).

Note that modules are normally created by the compiler when it encounters a module/1 directive. The create_module/1 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.

Note that the created module will by default import the language module `eclipse_language`. To create a completely empty module, use the more general predicate create_module/3. In fact, create_module/1 is defined as

       create_module(Module) :-
           create_module(Module, [], eclipse_language).

The system does not allow the atom [] to be used as a module name!

### Modes and Determinism

- create_module(+) is det

### Exceptions

(4) instantiation fault
  Module is not instantiated.
(5) type error
  Module is not an atom, or Module is the atom [].
(97) module already exists
  Module already exists.

## Examples

    Success:
        [eclipse 1]: create_module(m).
        yes.
        [eclipse 2]: export(data/1)@m.
        yes.
        [eclipse 3]: compile_term(data(99))@m.
        yes.
        [eclipse 4]: m:data(X).

        X = 99
        yes.
        [eclipse 5]: erase_module(m).
        yes.

    Error:
        create_module(M).                   (Error 4).
        create_module(1).                   (Error 5).
        create_module(m), create_module(m). (Error 97).

## See Also

module / 1, create_module / 3, erase_module / 1, get_module_info / 3, current_module / 1