2017-02-16 156 views
0

對於以下SWI-Prolog程序,我想創建一個謂詞,它返回除一個值外的所有值。
例如,返回除ahmed之外的所有男性。
我該怎麼做?SWI-Prolog:返回除一個以外的所有值

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

' - 男性(P),P \ = ahmed.' – CapelliC

+1

@CapelliC,哦,請:'DIF(P,艾哈邁德),男(P) ' – false

回答

1

不確定要理解。

你想要一個謂詞來返回一個(不是艾哈邁德)男性的單一名稱,並通過回溯,另一個名稱和另一個名稱回憶它,...?

我想,你可以簡單地寫

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

或你想返回一個列表的所有(無艾哈邁德)的男性名字謂語?

在這種情況下,你可以寫

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

謝謝。我需要的不是艾哈邁德。 –

相關問題