Prolog案例三

开发工具依然是GNU-Prolog,在案例中有这样的小问题如下:
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

希望对你有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值