2012-09-21 43 views
1

我在我的谓词中有一个基本情况,我必须将原子A中的值赋给原子B.不知道这是否可能,但是有什么办法可以做到这一点吗?Prolog将原子分配给另一个原子

我的谓词是如下

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

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

例如,如果Expr是'a'并且Out是'a11'并且Expr是原子,那么Out也将被分配'a'。

在此先感谢您的帮助。

+0

你有没有试过蒙太奇(Expr,Expr)? – Borgleader

+0

哦,我忘了添加别的东西。例如,在这个特殊情况下,Expr是'a',而Out是'a11',所以如果Expr是一个原子,它会将'a'分配给Out。对不起,错过了这部分。 – edelweiss

回答

3

在Prolog中,你不指定,你统一。你不能统一aa11,因为它们是不同的原子:

?- a = a11. 
false. 

这也为通过统一与原子已绑定变量也是如此:

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

事实上,当=条款两侧完全磨平(任何地方都不含变量),统一就会减少到检查术语平等。这就是为什么你可以使用=来绑定变量并进行模式匹配。

您将不得不重新考虑您的程序逻辑,无需分配即可工作。