Prolog 中的相等运算符

2024 年 8 月 29 日 | 阅读 3 分钟

为了测试相等性和不等性,Prolog 有三种类型的关系运算符。算术表达式的值可以通过第一种关系运算符进行比较。项可以通过其他两种类型的关系运算符进行比较。

相等运算符 (=:=)

给定算术表达式

如果 E1 和 E2 的计算结果相同,则上面的 E1 =:= E2 成功。

例如

Prolog 使用 checkeven/1 谓词来识别整数是奇数还是偶数。


// 是除法运算符。它将第一个参数除以第二个参数,并且该除法的结果会截断为最接近它和零之间的整数。所以 7//2 是 3, 18//2 是 9, -27//2 是 -13, -10//2 是 -5。将整数除以 2 并将其乘以 2 将得到原始整数(如果它是偶数),否则不是。

不等运算符 (=\=)

给定算术表达式

如果 E1 和 E2 的计算结果不相同,则算术表达式 E1 =\= E2 成功。

例如

项相同

给定目标

在infix运算符 == 中,两个参数都必须是项。如果 Term1 和 Term2 相同,则上述目标成功。

例如

当算术表达式值与 is/2 一起使用时,算术表达式值只能求值。这里,该项由 5+4 定义,参数为 5 和 4,函子为 +。这个项与 2+7 项完全不同。

项不相同 (\==)

给定目标

上面的目标用于测试 Term1 和 Term2 是否不相同。如果 Term1 == Term2 失败,则 Term1 \== Term2 成功。否则,目标失败。

例如

上面的输出表明变量 A 和 B 是不同的变量,并且都未绑定。

项相同并统一 (=)

== 运算符类似于相等运算符 =,但存在重要差异。如果 Term1 和 Term2 统一,则 Term1==Term2 成功。

例如

非统一 (\=)

给定目标

如果 Term1 = Term2 失败,则上述目标成功。这意味着两个项无法统一。否则,上述目标失败。

例如