如何在文件内部使用op / 3

时间:2019-02-21 10:44:42

标签: prolog swi-prolog

我尝试使用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).

1 个答案:

答案 0 :(得分:4)

问题是您要重新定义op/3谓词,而不是声明新的运算符。

要在查询文件时声明新的运算符,必​​须在程序中添加指令:

:-op(35, xfx, is_in).

请注意,在该指令之前操作符将不可用,因此您应该在文件中在其用法上方添加该指令。