Prolog 如何";写一个谓词,返回一个与literal相反的;在序言中?

Prolog 如何";写一个谓词,返回一个与literal相反的;在序言中?,prolog,Prolog,如何编写一个谓词,该谓词将返回Prolog中与文本相反的结果,以便在执行以下查询时得到以下答案 ?- opposite(+a,L). L = -a. ?- opposite(-a,L). L = +a. 这很简单 opposite(+(X),-(X)). opposite(-(X),+(X)). 因为+或-不是常数(原子)a的一部分,而是它前面的运算符(因此-a实际上是一个非运算符表达式-(a))。因此,我们只需要捕获X中运算符前面的任何内容,并说L是相同X前面的相反运算符 因此: ?- o

如何编写一个谓词,该谓词将返回Prolog中与文本相反的结果,以便在执行以下查询时得到以下答案

?- opposite(+a,L).
L = -a.
?- opposite(-a,L).
L = +a.
这很简单

opposite(+(X),-(X)).
opposite(-(X),+(X)).
因为
+
-
不是常数(原子)
a
的一部分,而是它前面的运算符(因此
-a
实际上是一个非运算符表达式
-(a)
)。因此,我们只需要捕获
X
中运算符前面的任何内容,并说
L
是相同
X
前面的相反运算符

因此:

?- opposite(-a,X).
X = +a.

?- opposite(+a,X).
X = -a.
这很简单

opposite(+(X),-(X)).
opposite(-(X),+(X)).
因为
+
-
不是常数(原子)
a
的一部分,而是它前面的运算符(因此
-a
实际上是一个非运算符表达式
-(a)
)。因此,我们只需要捕获
X
中运算符前面的任何内容,并说
L
是相同
X
前面的相反运算符

因此:

?- opposite(-a,X).
X = +a.

?- opposite(+a,X).
X = -a.