11.3.122 module/[2,3] [declaration]

Synopsis

:- module(+ModuleName, +PublicPred).

:- module(+ModuleName, +PublicPred, +Options).

Declares the file in which the declaration appears to be a module-file named ModuleName, with public predicates PublicPred. Must appear as the first term in the file.

Arguments

ModuleName
atom, must be nonvar
PublicPred
list of simple_pred_spec, must be ground

List of predicate specifications of the form Name/Arity.

Options
list of term, must be ground

A list of zero or more options of the form:

hidden(Boolean)
Boolean is false (the default) or true. In the latter case, tracing of the predicates of the module is disabled (although spypoints can be set), and no source information is generated at compile time.

Description

The definition of a module is not limited to a single file, because a module-file may contain commands to load other files. If myfile, a module-file for ModuleName, contains an embedded command to load yourfile and if yourfile is not itself a module-file, then all the predicates in yourfile are loaded into module ModuleName.

If the export list is not properly specified, there will be a warning or error message at compile time.

Exceptions

instantiation_error
type_error
PredSpecList is not a list of simple_pred_spec
context_error
“declaration appeared in query”, or TODO: declaration appears other than as the first term in a file being loaded.

Examples

A module declaration from the Prolog library:

     :- module(varnumbers, [
     	numbervars/1,
     	varnumbers/2,
     	varnumbers/3
        ],[
     	hidden(true)
        ]).

See Also

Module Declarations, ref-mod.


Send feedback on this subject.