Author(s): Adapted from SICStus 0.6 code; modifications and documentation by Daniel Cabeza and Manuel Carro.
Version: 1.7#198 (2002/4/17, 20:13:7 CEST)
Operators allow writting terms in a more clear way than the standard functional notation. Standard operators in Ciao are defined by this predicate (but note that the compiler itself defines more operators at compile time):
standard_ops :- op(1200,xfx,[:-]), op(1200,fx,[:-,?-]), op(1100,xfy,[;]), op(1050,xfy,[->]), op(1000,xfy,[',']), op(900,fy,[\+]), op(700,xfx,[=,\=,==,\==,@<,@>,@=<,@>=,=..,is,=:=,=\=,<,=<,>,>=]), op(550,xfx,[:]), op(500,yfx,[+,-,/\,\/,#]), op(500,fy,[++,--]), op(400,yfx,[*,/,//,rem,mod,<<,>>]), op(200,fy,[+,-,\]), op(200,xfx,[**]), op(200,xfy,[^]), op(25,fy,[^]).
operators
)operators
)
op(Precedence,Type,Name)
Declares the atom Name
to be an operator of the stated Type
and Precedence
(0 =< Precedence
=< 1200). Name
may also be a list of atoms in which case all of them are declared to be operators. If Precedence
is 0 then the operator properties of Name
(if any) are cancelled. Note that, unlike in
ISO-Prolog, it is allowed to define two operators with the same name, one infix and the other postfix.
current_op(Precedence,Type,Op)
The atom Op
is currently an operator of type Type
and precedence Precedence
. Neither Op
nor the other arguments need be instantiated at the time of the call; i.e., this predicate can be used to generate as well as to test.
current_prefixop(Op,Less,Precedence)
Similar to
current_op/3
, but it concerns only the prefix operators. It returns only one solution. Not a predicate for general use.
current_infixop(Op,LeftLess,Prec,RightLess)
Similar to
current_op/3
, but it concerns only infix operators. It returns only one solution. Not a predicate for general use.
current_postfixop(Op,Less,Precedence)
Similar to
current_op/3
, but it concerns only the postfix operators. It returns only one solution. Not a predicate for general use.
Go to the first, previous, next, last section, table of contents.