op/3

See also: Predefined Operators, current_op/3.

op(Priority,Assoc,Op)

Declares the predicate as operator.

Remarks

op/3 allows to declare the new operators Op with given Priority and Associativity.

Priority is the integer from 1 through 1200. The lower number corresponds to higher priority.

Associativity takes one of three forms:

The letters x and y is used to define the argument priority. x determines the argument with priority higher than operator's one. y determines the argument with priority lower or equal than operator's one. For example: the operator '-' declared with associativity yfx. So, the expression a-b-c is equivalent to (a-b)-c, but not to a-(b-c).

The list of predifined operators is the following

op(1200,xfx,"-->"). % "-->" is used by the DCG Grammar Parser

op(1200,fx,":-"). op(1200,xfx,":-").

op(1100,xfy,";"). op(700,xfx,"=..").

op(1000,xfy,","). op(700,xfx,"<>").

op(900,fy,"not"). op(700,xfx,"><").

op(700,xfx,"\=="). op(700,xfx,"=").

op(700,xfx,"\="). op(500,yfx,"-").

op(500,yfx,"+"). op(600,xfx,":").

op(700,xfx,"is"). op(400,yfx,"*").

op(700,xfx,"<"). op(400,yfx,"/").

op(700,xfx,"=<"). op(400,yfx,"div").

op(700,xfx,">"). op(300,xfx,"mod").

op(700,xfx,">="). op(200,fx,"+").

op(700,xfx,"=="). op(200,fx,"-").

Example

% define the operator has

op(200,xfx,"has").

has(human,head).

has(human,leg).

has(dog,tail).

has(dog,head).

man has head

Yes

man has tail

No

Y has head

Y=human

Y=dog

2 Solutions

Yes