我需要在Prolog中执行一个函数,给定一个列表,检查每个成员是否不同。唯一的特点是它不能计算“_”变量。 这是我想要的一个例子:
na.rm = TRUE
我已经尝试使用以下函数,使用谓词“var”检查变量是否空闲,但它不起作用:
unique([3,1,2]).
> true
unique([3,1,2,_]).
> true
unique([3,1,2,_,_,_]).
> true
unique([3,1,2,1]).
> false
unique([3,1,2,1,_]).
> false
感谢您的帮助
PS:我正在使用GProlog
PS2:我知道函数fd_all_different可以工作,但我宁愿自己实现
答案 0 :(得分:2)
由于@false解决了问题:
对于那些想知道如何,这里的“独特”功能:
dif(X,Y) :- X \== Y.
unique([]).
unique([T|Q]) :- maplist(dif(T), Q), unique(Q).