对于以下SWI-Prolog程序,我想创建一个谓词,该谓词返回除一个值以外的所有值。
例如,除 ahmed 外,返回所有男性
我怎么能这样做?
male(ahmed).
male(mohamed).
male(ali).
male(samir).
male(khalid).
答案 0 :(得分:1)
不确定。
你想要一个谓词返回一个(没有Ahmed)男性的单一名称,并通过回溯,另一个名称和另一个名称来回忆它吗?
我想你可以简单地写
noAhmed(M) :-
male(M),
M \= ahmed.
或者你想要一个带有所有(没有Ahmed)男性名字的列表的谓词吗?
在这种情况下,您可以写
noAhmedList(L) :-
findall(M, (male(M), M \= ahmed), L).