首页 > 解决方案 > 如何在Prolog中“编写一个返回与文字相反的谓词”?

问题描述

我如何编写一个谓词,它将在 Prolog 中返回与文字相反的内容,以便如果我执行以下查询,我会得到以下答案。

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

标签: prolog

解决方案


简直是

opposite(+(X),-(X)).
opposite(-(X),+(X)).

因为+or-不是常量 (atom) 的一部分a,而是它前面的运算符(所以-a实际上是非运算符表达式-(a))。所以我们只需要捕获该运算符之前的任何内容X,并说L相反的运算符在相同的之前X

所以:

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

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

推荐阅读