如何在 Prolog 中统一术语的运算符?

How to unify a term's operator in Prolog?

我可以在SWI-Prolog中统一操作数,例如:

?- +(X,Y) = 1 + 2.
X = 1,
Y = 2.

但是如何统一一个算子呢?

?- Op(X,Y) = 1 + 2.
ERROR: Syntax error: Operator expected

我希望 Prolog 到 return

X = 1,
Y = 2,
Op = +.

谢谢。

你统一条款。 +(1,2)1 + 2 是同一个词。 您可以使用 univ 谓词 (=..) 来分解这样的术语:

?- 1+2 =.. [Op, X, Y].
Op =  (+),
X = 1,
Y = 2.