2
如果我的術語是關閉的,我已經提前申請了一個術語,從我接觸Prolog開始已經有幾年了,我決定嘗試清除我的序列帽,並再次探索的。將術語的值轉換爲原子
我會直接進入代碼,然後通過事後描述問題。此代碼不是我的情況的確切主題。
mammal :- true.
reptile :- true.
animals_that_are(_,_) :-
write('Not found!'),
nl,
false.
animals_that_are(mammal, L) :-
L = [lion, elephant, dog].
animals_that_are(reptile, L) :-
L = [lizard, turtle].
does_animal_belong_to_group(Species, Group) :-
animals_that_are(Group, Animals),
member(Species, Animals).
所以基本問題是,當調用does_animal_belong_to_group(lion, mammal)
時,文本Not Found!被顯示並失敗,向我暗示,原子哺乳動物和獅子正在轉化爲術語,因此不會與他們各自的規則相關聯。
當我直接調用兩個規則,我得到預期的結果
animals_that_are(reptile, L).
L = [lizard, turtle].
有沒有一種方法,一個原子可以通過一個學期獲得通過,在這種情況下,則原子重新提取或很我解決這個錯誤的方式?
當然,這是有道理的。我所做的事情看起來很複雜,並且知道我已經把事情搞糟了,因爲它曾經有一段時間,因爲我甚至觸及了一種沒有程序的語言。感謝您的建議和解釋! –
那些縮寫「哺乳動物: - 真實」表明你正在嘗試一些*更復雜的事情。最終,隨時跟進這個問題...... – CapelliC
當然。我不確定它是否有必要,但我實際上是用它來作爲原子的*聲明。然而,正如我在閱讀我的一些舊的uni筆記,似乎我實際上並不需要預先聲明事情。 –