【问题标题】:Prolog assigning atom to another atomProlog将原子分配给另一个原子
【发布时间】:2012-09-21 15:54:24
【问题描述】:

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

我的谓词如下

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

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

例如,如果 Expr 是 'a' 而 Out 是 'a11' 并且 Expr 是一个原子,则 Out 也将被分配为 'a'。

提前感谢您的帮助。

【问题讨论】:

  • 你试过 montage(Expr,Expr) 吗?
  • 哦,我忘了添加其他内容。例如,在这种特殊情况下,Expr 是 'a' 而 Out 是 'a11' 所以如果 Expr 是一个原子,它会将 'a' 分配给 Out。很抱歉,错过了这部分。

标签: prolog


【解决方案1】:

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

?- a = a11.
false.

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    相关资源
    最近更新 更多