我想比较两个列表,同时考虑和比较每个子项目。例如,如果我有列表[1, t1(2, t2(3), 4)]
和[1, t1(2, t2(2), 4)]
,则结果应该是第一个列表比第二个列表更大(>
),因为3 > 2
就其而言t2
(这是t1
一词的一部分)
我想到了这样的事情:
cmp([1, t1(2, t2(3), 4)], [1, t1(2, t2(2), 4)], X).
X = >
因此输入将是两个列表,输出是一个数学符号,表示它们之间的关系 也许我的问题有点混乱,但这可以以某种方式完成吗?
修改:
对不起,我忘了提一下,我想用算术比较数字,按标准顺序比较所有其他条款。这就是我陷入困境的原因。
答案 0 :(得分:1)
我相信您正在寻找的是compare / 3谓词[1]。这是一种标准的Prolog方法,因此我刚刚在SICStus Prolog上对其进行了测试,但是正如您从[1]所看到的,它也可以在swi prolog中使用。
| ?- compare(X,[1, t1(2, t2(3), 4)], [1, t1(2, t2(2), 4)]).
X = > ?
yes