有人可以向我解釋爲什麼這個序言查詢的工作方式。該定義是:如何使用succ通過遞歸查詢運行prolog?
add(0,Y,Y).
add(succ(X),Y,succ(Z)):- add(X,Y,Z).
鑑於此:
?- add(succ(succ(succ(0))), succ(succ(0)), R).
繼承人的查詢跟蹤:
Call: (6) add(succ(succ(succ(0))), succ(succ(0)), R)
Call: (7) add(succ(succ(0)), succ(succ(0)), _G648)
Call: (8) add(succ(0), succ(succ(0)), _G650)
Call: (9) add(0, succ(succ(0)), _G652)
Exit: (9) add(0, succ(succ(0)), succ(succ(0)))
Exit: (8) add(succ(0), succ(succ(0)), succ(succ(succ(0))))
Exit: (7) add(succ(succ(0)), succ(succ(0)),
succ(succ(succ(succ(0)))))
Exit: (6) add(succ(succ(succ(0))), succ(succ(0)),
succ(succ(succ(succ(succ(0))))))
是困惑我最瞭解該教程是事實的一部分,在第一個參數,succ被剝離,並且它遞歸。雖然遞歸雖然,R獲得succ ...如何?!另外,零在哪裏從第一個出口(9)出發?我對prolog很陌生,我正在努力理解作業的語言。任何幫助非常感謝。先謝謝了。
注:有興趣的人,鏈接,本教程是http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse9
通常,'succ/1'寫成's/1'。請看標籤[tag:successor-arithmetics]的答案。 – false 2012-04-25 07:24:35