无权修改静态方法(No permission to modify static procedure)

2019-09-01 10:05发布

当我做一个断言,如:

assert(-color(red)).

它给我的错误:

ERROR: assert/1: No permission to modify static procedure `(-)/1'

所以我改变 - 颜色动态:

dynamic -color/4.

现在它给我的错误:

ERROR: dynamic/1: Type error: `atom' expected, found `-color'

有任何想法吗?

Answer 1:

首先,因为在Prolog本身是告诉你,它是阅读-color(foo)-(color(foo)) 这就是为什么它的抱怨(-)/1 ,而不是-color 。 你不能一开始就有一个连字符的原子。

其次,你要asserta/1assertz/1 ,没有assert/1

第三,当你声明动态谓词元数4,你应该元数的4使用它,而不是1元数。换句话说,你的动态要么阅读:- dynamic color/4和使用asserta(color(Red,Green,Blue,Alpha))或者它应读:- dynamic color/1和是用于asserta(color(red)) 该组合/4/1是不是你的意思。



文章来源: No permission to modify static procedure
标签: prolog