directive
multifile/1
Description
multifile(Name/Arity)
multifile((Name/Arity, ...))
multifile([Name/Arity, ...])
multifile(Entity::Name/Arity)
multifile((Entity::Name/Arity, ...))
multifile([Entity::Name/Arity, ...])
multifile(Module:Name/Arity)
multifile((Module:Name/Arity, ...))
multifile([Module:Name/Arity, ...])
multifile(Name//Arity)
multifile((Name//Arity, ...))
multifile([Name//Arity, ...])
multifile(Entity::Name//Arity)
multifile((Entity::Name//Arity, ...))
multifile([Entity::Name//Arity, ...])
multifile(Module:Name//Arity)
multifile((Module:Name//Arity, ...))
multifile([Module:Name//Arity, ...])
Declares multifile predicates and multifile
grammar rule non-terminals. In the case of object or category multifile
predicates, the predicate (or non-terminal) must also have a
scope directive in the object or category
holding its primary declaration (i.e. the declaration without the
Entity::
prefix). Entities holding multifile predicate primary
declarations must be compiled and loaded prior to any entities contributing
with clauses for the multifile predicates (to prevent using multifile
predicates to break entity encapsulation).
Protocols cannot declare or define multifile predicates as protocols cannot contain predicate definitions.
Warning
Some backend Prolog compilers declare the atom multifile
as an
operator for a lighter syntax. But this makes the code non-portable
and is therefore a practice best avoided.
Template and modes
multifile(+qualified_predicate_indicator_term)
multifile(+qualified_non_terminal_indicator_term)
Examples
:- multifile(table/3).
:- multifile(user::hook/2).
See also