SWI-Prolog:返回除一个以外的所有值

时间:2017-02-16 22:20:28

标签: prolog

对于以下SWI-Prolog程序,我想创建一个谓词,该谓词返回除一个值以外的所有值。
例如,除 ahmed 外,返回所有男性 我怎么能这样做?

male(ahmed).
male(mohamed).
male(ali).
male(samir).
male(khalid).

1 个答案:

答案 0 :(得分:1)

不确定。

你想要一个谓词返回一个(没有Ahmed)男性的单一名称,并通过回溯,另一个名称和另一个名称来回忆它吗?

我想你可以简单地写

noAhmed(M) :-
  male(M),
  M \= ahmed.

或者你想要一个带有所有(没有Ahmed)男性名字的列表的谓词吗?

在这种情况下,您可以写

noAhmedList(L) :-
  findall(M, (male(M), M \= ahmed), L).