我尝试使用op/3
在文件中定义运算符。像这样
is_in(Thing, Place):-
location(Thing, Place).
op(35, xfx, is_in).
但是当我consult/1
个文件被复制时,我得到了一个异常
No permission to modify static procedure `op/3'
我尝试使用dynamic
指令,但是会导致相同的错误。
在副本中执行op(35, xfx, is_in).
。
答案 0 :(得分:4)
问题是您要重新定义op/3
谓词,而不是声明新的运算符。
要在查询文件时声明新的运算符,必须在程序中添加指令:
:-op(35, xfx, is_in).
请注意,在该指令之前操作符将不可用,因此您应该在文件中在其用法上方添加该指令。