#=在某些页面上提到了运营商,例如https://www.metalevel.at/prolog但在大多数其他页面上没有提到,例如:http : //www.swi-prolog.org/pldoc/man?section= operators
这个运算符是什么意思?
运算符只是谓词的语法糖:如果你写的是X #= Y,它是 的缩写#=(X,Y),所以查找谓词(#=)/2。
该运算符在SWI-Prolog 文档中被称为谓词:
算术表达式
X等于Y。在对integers 进行推理时,替换(is)/2by(#=)/2以获得更一般的关系。请参阅声明性整数算术(第A.8.3节)。
它们是有限域上的约束逻辑编程(CLP(FD)) 包的一部分。这种约束相对于(is)/2运算符的一个优点是它可以在多个方向上使用。例如:
?- use_module(库(clpfd) )。 真的。 ?- 4 #= 2*Y。 Y = 2。 ?- X #= 2*16。 X = 32。
此外,约束可以延迟。例如:
?- X #= 2*Y, Y #= 14.
X = 28,
Y = 14.
Run Code Online (Sandbox Code Playgroud)
如需更广泛的介绍,请阅读 @mat 的 clpfd 入门。