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

标签 prolog

我的谓词中有一个基本情况,其中我必须将原子 A 中的值分配给原子 B。不确定这是否可能,但有什么方法可以做到这一点吗?

我的谓词如下

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

从atom(Expr)开始,我尝试了各种方法,但都不对。

例如,如果 Expr 是“a”,Out 是“a11”,并且 Expr 是原子,则 Out 也将被分配为“a”。

预先感谢您的帮助。

最佳答案

在 Prolog 中,您不是分配,而是统一。统一。您无法将 aa11 统一起来,因为它们是不同的原子:

?- a = a11.
false.

这也适用于已经通过与这些原子统一绑定(bind)的变量:

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

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

您必须重新考虑程序逻辑才能在没有分配的情况下工作。

关于Prolog 将原子分配给另一个原子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12533951/

相关文章:

prolog - Prolog 元解释器中的循环

使用列表的 Prolog 祖先子句

Prolog:查找重复项并将其放入列表中

prolog - 如何使用 prolog 查找字符串长度

Prolog:反向([],A)与反向(A,[])

prolog - 如何在 Prolog 中找到目标的所有解决方案?

prolog - Power with successor arithmetic - 如何防止无限循环? [序言]

prolog - 这个语法是什么意思? (序言)

prolog - 下划线后跟数字而不是解决方案

prolog - 如何在prolog中控制用户输入?