【发布时间】:2016-05-17 13:18:20
【问题描述】:
我有一个这样的元组列表:
[(1,2),(5,3),(6,7)]
我正在尝试编写一个谓词来检查列表中的所有元组是否不同。以下行适用于包含整数的列表,但不适用于包含元组的列表:
all_diff(L) :- \+ (select(X,L,R),member(X,R)).
member/2 可以很好地检查一个元组是否在列表中,但它是 select/3 有元组问题。它给出了一个类型错误。
如何检查所有元组是否不同?
【问题讨论】:
-
select/3给出类型错误?什么时候? -
@false 例如,当我尝试以下查询时
select((1, 2), [(1, 3), (1, 2)], R).. -
您使用的是什么 Prolog 解释器? GNU? SWI?其他?你能解释为什么它不起作用吗?据我所知,代码按照您编写的方式运行。
-
SICStus、SWI 和 GNU 都不会对该查询产生错误!
-
@false 我正在使用 ECLiPSe 6.1,就是这样。仍然不明白为什么它在 ECLiPSe 中不起作用。