如何在 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.
我可以在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.