Author(s): Adapted from SICStus 0.6 code; modifications and documentation by Daniel Cabeza and Manuel Carro.
Version: 1.11#222 (2004/5/24, 13:8:7 CEST)
Version of last change: 1.9#287 (2004/2/13, 18:59:4 CET)
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,[^]).
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.
Usage: * ISO *
Precedence
is an integer.
(basic_props:int/1
)
Type
specifies the type and associativity of an operator.
(basic_props:operator_specifier/1
)
Name
is an atom or a list of atoms.
(basic_props:atm_or_atm_list/1
)
basic_props:native/1
)
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.
Usage: * ISO *
Precedence
is an integer.
(basic_props:int/1
)
Type
specifies the type and associativity of an operator.
(basic_props:operator_specifier/1
)
Op
is an atom.
(basic_props:atm/1
)
Precedence
is an integer.
(basic_props:int/1
)
Type
specifies the type and associativity of an operator.
(basic_props:operator_specifier/1
)
Op
is an atom.
(basic_props:atm/1
)
basic_props:native/1
)
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.