Author(s): Adapted from SICStus 0.6 code; modifications and documentation by Daniel Cabeza and Manuel Carro.
Version: 1.10#7 (2006/4/26, 19:22:13 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: op(+int, +operator_specifier, +atm_or_atm_list)
* ISO *
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: current_op(?int, ?operator_specifier, ?atm)
* ISO *
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.