我定义一个运算符如下:
:- op(500, xfx, =>).
当我尝试类似的事情时:
assert(a => b).
Prolog 引发错误,提示“无权修改 static_procedure (=>)/2”。
有什么解决办法吗?
我定义一个运算符如下:
:- op(500, xfx, =>).
当我尝试类似的事情时:
assert(a => b).
Prolog 引发错误,提示“无权修改 static_procedure (=>)/2”。
有什么解决办法吗?
作为安全措施,您必须警告 SWI 您将在运行时修改谓词:
:- dynamic (=>)/2.
放在文件顶部应该这样做。
您一定是用另一个符号代替(=>)/2
. 可能(->)/2
这是一个无法修改的控制结构。
欢迎使用 SWI-Prolog(多线程,32 位,版本 6.1.3-116-gf1c7e06) ... ?-断言((a -> b))。 错误:asserta/1:无权修改静态过程 `(->)/2' 错误:定义在 /opt/gupu/pl-devel/lib/swipl-6.1.3/boot/init.pl:194 ?- op(500, xfx, =>)。 真的。 ?-断言(a => b)。 真的。