-1
以下腳本有什麼問題?不連續謂詞是什麼意思?
want(grocerystore).
available(grocerystore).
want(X):-
available(X).
can(grocerystore):-
want(grocerystore),
\+work(walmart),
available(grocerystore).
以下腳本有什麼問題?不連續謂詞是什麼意思?
want(grocerystore).
available(grocerystore).
want(X):-
available(X).
can(grocerystore):-
want(grocerystore),
\+work(walmart),
available(grocerystore).
「不連續謂語」意味着你定義爲給定謂詞多個條款,但在定義之間的不同謂詞的原因。 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) :- ...
有可能是與您的程序等問題,但我只解決你有關「不連續謂詞」的問題。
不確定你在問什麼,因爲你沒有顯示任何輸出。請相應地編輯您的問題。此外,「爲什麼不是我的代碼工作」這樣的問題是無關緊要的。 –