2013-11-25 197 views
0

有沒有一種方法可以查詢SWI Prolog數據庫來檢查它是否不包含元素?SWI Prolog數據庫

我曾嘗試使用「不」,但似乎不適用於此版本的Prolog。

+1

如果你定義了類似'st(1).'的東西,當你執行你的程序時你輸入一個查詢'st(45).',你會得到'false'作爲答案。這將意味着您創建的數據庫不包含該元素。那是你要的嗎? – Shevliaskovic

+1

也許你可以明確你嘗試過什麼,以什麼方式「看起來不起作用」? – hardmath

+1

SWI-Prolog的7.1.0文檔[敦促開發人員](http://www.swi-prolog.org/pldoc/doc_for?object=not/1)對新代碼使用「\ +」而不是「不」。參見[頁面底部](http://www.swi-prolog.org/pldoc/man?section=control)。但是,「不」應該仍然可用於向後兼容。 – hardmath

回答

2

也許您在尋找clause/2。一個虛擬會話樣品

1 ?- [user]. 
|: a(1). 
|: a(2). 
|: a(X) :- b(X). 
|: b(3). 
|: b(4). 
% user://1 compiled 0.03 sec, 6 clauses 
true. 

2 ?- clause(a(X),Body). 
X = 1, 
Body = true ; 
X = 2, 
Body = true ; 
Body = b(X). 

3 ?- clause(b(X),Body). 
X = 3, 
Body = true ; 
X = 4, 
Body = true. 

4 ?- clause(c(X),Body). 
false. 

你可以看到,C/1沒有被定義...

無論如何,SWI-Prolog的數據庫是一個複雜的野獸,它提供了much more控制有關的內容。