谓词中的Prolog算子

谓词中的Prolog算子,prolog,operators,Prolog,Operators,是否可以在谓词的参数中包含运算符(如+、>、=、!=、>=等)(下面的示例只是演示,没有太多用处) 测试(A>B):-A>B。 测试(A>=B):-AB。 测试(ab):=AB.工作 我在sicstus下工作。符号=、和:=不是Prolog中的运算符。您需要使用op/3指令使它们成为运算符。在Prolog解析代码之前,必须先查看运算符声明 字符序列=在Prolog中不是标记,因此需要用单引号将其括起来 :- op(700, xfx, '!='). :- op(700, xfx, <>

是否可以在谓词的参数中包含运算符(如+、>、=、!=、>=等)(下面的示例只是演示,没有太多用处)

测试(A>B):-A>B。
测试(A>=B):-A
似乎有效,但:

test(A != B) := A > B.
test(A <> B) := A < B.
test(A!=B):=A>B。
测试(ab):=A
没有-为什么?为什么有时可以包括操作员,有时不包括?如何使
测试(A!=B):=A>B.
工作


我在sicstus下工作。

符号
=
:=
不是Prolog中的运算符。您需要使用
op/3
指令使它们成为运算符。在Prolog解析代码之前,必须先查看运算符声明

字符序列
=
在Prolog中不是标记,因此需要用单引号将其括起来

:- op(700, xfx, '!=').
:- op(700, xfx, <>).
:- op(1100, xfx, :=).

test(A '!=' B) := A > B.
test(A <> B) := A < B.

符号
=
:=
不是Prolog中的运算符。您需要使用
op/3
指令使它们成为运算符。在Prolog解析代码之前,必须先查看运算符声明

字符序列
=
在Prolog中不是标记,因此需要用单引号将其括起来

:- op(700, xfx, '!=').
:- op(700, xfx, <>).
:- op(1100, xfx, :=).

test(A '!=' B) := A > B.
test(A <> B) := A < B.
:=(test('!='(A,B)), >(A,B)).
:=(test(<>(A,B)), <(A,B)).