代码之家  ›  专栏  ›  技术社区  ›  Nikita Misharin

如何在文件中使用op/3

  •  0
  • Nikita Misharin  · 技术社区  · 6 年前

    我试图在文件中使用 op/3 . 像这样

    is_in(Thing, Place):-
      location(Thing, Place).
    
    op(35, xfx, is_in).
    

    但是当我 consult/1 文件在repl中,我得到一个异常

    No permission to modify static procedure `op/3'
    

    我试着用 dynamic 指令,但它会导致相同的错误。

    执行 op(35, xfx, is_in). 在repl工程中。

    0 回复  |  直到 6 年前
        1
  •  4
  •   gusbro    6 年前

    问题是你试图重新定义 op/3 谓词而不是声明新运算符。

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

    :-op(35, xfx, is_in).
    

    请注意,运算符在指令之前不可用,因此您应该在文件中添加高于其用法的指令。