here(kitchen).
move(Place):- retract(here(X)), asserta(here(Place)).
我執行move(office).後,
錯誤提示如下:
<span style="color:#FF0000;">ERROR: retract/1: No permission to modify static_procedure `here/1'</span>
錯誤很明顯:不要使用靜態的過程here/1. 如果大家直接把所有的事實和規則下載GNU-Prolog就不會出現這個問題。
解決方法是:
here(kitchen).你應將程序文件中的here(kitchen).刪掉, 並用asserta(here(kitchen))來初始化here謂詞, 這樣系統就知道here謂詞是動態的了, 以後就可以對其進行更改了.
效果如下:記得第一步初始化here謂詞。
| ?- asserta(here(kitchen)).
yes
| ?- look.
You are in the kitchen
You can see:
apple
broccoli
crackers
You can go to:
office
cellar
dining room
yes
| ?- goto(office).
You are in the office
You can see:
desk
computer
You can go to:
hall
kitchen
希望對你有幫助。