Prolog将原子分配给另一个原子

时间:2012-09-21 15:54:24

标签: prolog

我的谓词中有一个基本情况,我必须将原子A中的值分配给原子B.不确定这是否可行,但有没有办法做到这一点?

我的谓语如下

  montage(Expr,Out) :- atom(Expr), ....

从原子(Expr)开始,我尝试了各种方法,但没有什么是正确的。

例如,如果Expr为'a'且Out为'a11'且Expr为原子,则Out也将被赋予'a'。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

在Prolog中,您没有指定,统一。您无法将aa11统一起来,因为它们是不同的原子:

?- a = a11.
false.

对于已经与这些原子统一绑定的变量,这也适用:

?- X = a, Y = a11, X = Y.
false.

事实上,当=子句的两边都完全基础(在任何地方都不包含变量)时,统一会减少到检查术语相等性。这就是为什么你可以使用=来绑定变量和进行模式匹配。

你必须重新考虑你的程序逻辑才能在没有任务的情况下工作。