2012-12-05 47 views
3

我剛剛開始學習Prolog,所以如果這有點天真,或者相當幼稚,請原諒我。我試圖定義這個謂詞無法在Prolog中定義謂詞

| ?- times(M,N,Product) :- Product is M*N. 

這給了我這個錯誤

uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0) 

我使用GNU Prolog的。這裏有什麼錯?

+0

這很奇怪。我使用GNU Prolog(通過IDEOne)嘗試了它,並沒有發生錯誤)。 – RonaldBarzell

+1

在規則之前輸入'[user] .'。 – false

+0

@false:你能不能詳細一點? – OneMoreError

回答

6

假說,如果你想解釋的執行過程中定義一個謂語或功能,您必須輸入翻譯的「用戶」模式,通過鍵入:

['user']. 

輸入您的謂詞後,你只需要離開這個「區域」,作爲解釋者的確認,你已經完成了編碼,並且它可以開始將謂詞編譯成字節碼 - 然後,你可以通過您的函數名稱訪問。

要離開「用戶」模式,只需按ctrl + d即可。

測試中都swipl和gprolog:

SWI-Prolog version 5.10.4 
(GNU Prolog) 1.3.0 

商祺!

0

檢查用戶手冊8.7特別是動態子句管理:asserta/assertz。

接下來將幫助你在gprolog定義新的斷言:

asserta的((倍(M,N,產品): - 產品是M * N))。