没有比较运算符的相等参数

时间:2019-03-21 22:38:09

标签: prolog

我想创建一个谓词,以评估输入的两个参数是否相同。这是我写的(很基础)

same(A, B) :- A == B.

same(21, 21) % true
same(var, 'var') % true
same(var, 'Var') % false

我想不使用比较运算符来做到这一点,但我不知道如何做。对我有什么提示吗?

1 个答案:

答案 0 :(得分:0)

奇怪的问题。不使用比较运算符有什么意义?假设根据您的same/2谓词定义,您要测试术语平等,一种解决方案是:

same(A, B) :- sort([A, B], [_]).

但这是一个技巧,它在执行术语比较以进行排序时利用了术语相等的标准sort/2谓词。因此,此(或任何其他类似的技巧)不是明智的编程解决方案。您的问题背景是什么?