Predicates can be added to a module by importing them from another module. Importing adds predicates to the namespace of a module. An imported predicate can be called exactly the same as a locally defined predicate, although its implementation remains part of the module in which it has been defined.
Importing the predicates from another module is achieved using the directives use_module/1 or use_module/2. Note that both directives take file name(s) as arguments. I.e., modules are imported based on their file name rather than their module name.
import
option of
load_files/2.
The first example below loads member/2
from the lists library and append/2
under the name list_concat
, which how this predicate is
named in YAP. The second example loads all exports from library option,
except for meta_options/3.
These renaming facilities are generally used to deal with portability
issues with as few as possible changes to the actual code. See also section
C and
section 5.7.
:- use_module(library(lists), [ member/2, append/2 as list_concat ]). :- use_module(library(option), except([meta_options/3])).
The module/2 directive, use_module/1 and use_module/2 are sufficient to partition a simple Prolog program into modules. The SWI-Prolog graphical cross-referencing tool gxref/0 can be used to analyse the dependencies between non-module files and propose module declarations for each file.