我的谓词中有一个基本情况,我必须将原子A中的值分配给原子B.不确定这是否可行,但有没有办法做到这一点?
我的谓语如下
montage(Expr,Out) :- atom(Expr), ....
从原子(Expr)开始,我尝试了各种方法,但没有什么是正确的。
例如,如果Expr为'a'且Out为'a11'且Expr为原子,则Out也将被赋予'a'。
提前感谢您的帮助。
答案 0 :(得分:3)
在Prolog中,您没有指定,统一。您无法将a
与a11
统一起来,因为它们是不同的原子:
?- a = a11.
false.
对于已经与这些原子统一绑定的变量,这也适用:
?- X = a, Y = a11, X = Y.
false.
事实上,当=
子句的两边都完全基础(在任何地方都不包含变量)时,统一会减少到检查术语相等性。这就是为什么你可以使用=
来绑定变量和进行模式匹配。
你必须重新考虑你的程序逻辑才能在没有任务的情况下工作。