我的谓词中有一个基本情况,其中我必须将原子 A 中的值分配给原子 B。不确定这是否可能,但有什么方法可以做到这一点吗?
我的谓词如下
montage(Expr,Out) :- atom(Expr), ....
从atom(Expr)开始,我尝试了各种方法,但都不对。
例如,如果 Expr 是“a”,Out 是“a11”,并且 Expr 是原子,则 Out 也将被分配为“a”。
预先感谢您的帮助。
最佳答案
在 Prolog 中,您不是分配,而是统一。统一。您无法将 a
与 a11
统一起来,因为它们是不同的原子:
?- a = a11.
false.
这也适用于已经通过与这些原子统一绑定(bind)的变量:
?- X = a, Y = a11, X = Y.
false.
事实上,当 =
子句的两边都完全接地(任何地方都不包含变量)时,统一就简化为检查术语相等性。这就是为什么您可以使用 =
来绑定(bind)变量和进行模式匹配。
您必须重新考虑程序逻辑才能在没有分配的情况下工作。
关于Prolog 将原子分配给另一个原子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12533951/