我剛剛開始學習Prolog
,所以如果這有點天真,或者相當幼稚,請原諒我。我試圖定義這個謂詞無法在Prolog中定義謂詞
| ?- times(M,N,Product) :- Product is M*N.
這給了我這個錯誤
uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0)
我使用GNU Prolog的。這裏有什麼錯?
我剛剛開始學習Prolog
,所以如果這有點天真,或者相當幼稚,請原諒我。我試圖定義這個謂詞無法在Prolog中定義謂詞
| ?- times(M,N,Product) :- Product is M*N.
這給了我這個錯誤
uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0)
我使用GNU Prolog的。這裏有什麼錯?
假說,如果你想解釋的執行過程中定義一個謂語或功能,您必須輸入翻譯的「用戶」模式,通過鍵入:
['user'].
輸入您的謂詞後,你只需要離開這個「區域」,作爲解釋者的確認,你已經完成了編碼,並且它可以開始將謂詞編譯成字節碼 - 然後,你可以通過您的函數名稱訪問。
要離開「用戶」模式,只需按ctrl + d
即可。
測試中都swipl和gprolog:
SWI-Prolog version 5.10.4
(GNU Prolog) 1.3.0
商祺!
檢查用戶手冊8.7特別是動態子句管理:asserta/assertz。
接下來將幫助你在gprolog定義新的斷言:
asserta的((倍(M,N,產品): - 產品是M * N))。
這很奇怪。我使用GNU Prolog(通過IDEOne)嘗試了它,並沒有發生錯誤)。 – RonaldBarzell
在規則之前輸入'[user] .'。 – false
@false:你能不能詳細一點? – OneMoreError