2016-11-14 67 views
-1

以下腳本有什麼問題?不連續謂詞是什麼意思?

want(grocerystore). 
available(grocerystore). 
want(X):- 
    available(X). 
can(grocerystore):- 
    want(grocerystore), 
    \+work(walmart), 
    available(grocerystore). 
+1

不確定你在問什麼,因爲你沒有顯示任何輸出。請相應地編輯您的問題。此外,「爲什麼不是我的代碼工作」這樣的問題是無關緊要的。 –

回答

1

「不連續謂語」意味着你定義爲給定謂詞多個條款,但在定義之間的不同謂詞的原因。 Prolog將所有謂詞的所有子句放在一起。

這裏有什麼正確定義一個例子的Prolog看起來像有多個條款對於給定的謂詞或事實:

person(sally). 
person(sue). 

dog(fido). 
dog(fluffy). 

你可以看到所有的person事實是在一起的,並且所有的dog事實在一起。

這裏是一個 「不連續的謂詞」 的一個例子:

person(sally). 
dog(fido). 

person(sue). 
dog(fluffy). 

這裏,person事實是由dog事實 「中斷」(和反之亦然)。

同樣的問題適用於謂詞,因爲它對事實的影響。在你的情況下,兩個不同的want條款由available實際上是「打斷」:

want(grocerystore). 
available(grocerystore). % 'available' clause occurs between two 'want' clauses 
want(X) :- ... 
在這種情況下

簡單的解決辦法:

available(grocerystore). 

want(grocerystore). 
want(X) :- ... 

有可能是與您的程序等問題,但我只解決你有關「不連續謂詞」的問題。