我在prolog中遇到了一個簡單的問題。 讓我們考慮的方案swi-prolog中的「NOT EXISTS」
worker(bill).
worker(smitt).
worker(fred).
worker(dany).
worker(john).
car(bmw).
car(mazda).
car(audi).
owner(fred,mazda).
owner(dany,bmw).
owner(john,audi).
我需要添加更多的謂詞no_car(X),這將是真實的,如果作業者X沒有汽車,也就是,如果我們輸入一個查詢 : - no_car(X )。 序言應該回答
X=smitt,
X=bill,
yes
我所做的是
hascar(X):-owner(X,_).
nocar(X):- worker(X),not hascar(X).
但這種方法是行不通的,因爲anonimous變量只能用於查詢avaliable。 所以,我真的堅持這一點。 我知道SQL中有「NOT EXISTS」字樣,它允許在查詢中表達這個邏輯,但是在序言中有沒有類似於它們的東西?
如果您使用\ +而不是使用\ +,則它與匿名變量無關。 –