directive
op/3
Description
op(Precedence, Associativity, Operator)
op(Precedence, Associativity, [Operator, ...])
Declares operators. Global operators can be declared inside a source file by writing the respective directives before the entity opening directives. Operators declared inside entities have local scope. Calls to the standard term input and output predicates take into account any locally defined operators.
Template and modes
op(+integer, +associativity, +atom_or_atom_list)
Examples
Some of the predicate argument instantiation mode operators used by Logtalk:
:- op(200, fy, +).
:- op(200, fy, ?).
:- op(200, fy, @).
:- op(200, fy, -).
An example of using entity local operators. Consider the following ops.lgt
file:
:- initialization((write(<=>(1,2)), nl)).
:- object(ops).
:- op(700, xfx, <=>).
:- public(w/1).
w(Term) :-
write(Term), nl.
:- public(r/1).
r(Term) :-
read(Term).
:- end_object.
Loading the file automatically calls the initialization goal. Compare its
output with the output of the ops::w/1
predicate. Compare also reading
a term from within the ops
object versus reading from user
.
| ?- {ops}.
<=>(1,2)
true.
| ?- ops::w(<=>(1,2)).
1<=>2
true.
| ?- ops::r(T).
|: 3<=>4.
T = <=>(3, 4).
| ?- read(T).
|: 5<=>6.
SYNTAX ERROR: operator expected
See also