当我做一个断言,如:
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'
有任何想法吗?
当我做一个断言,如:
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'
有任何想法吗?
首先,因为在Prolog本身是告诉你,它是阅读-color(foo)
为-(color(foo))
这就是为什么它的抱怨(-)/1
,而不是-color
。 你不能一开始就有一个连字符的原子。
其次,你要asserta/1
或assertz/1
,没有assert/1
。
第三,当你声明动态谓词元数4,你应该元数的4使用它,而不是1元数。换句话说,你的动态要么阅读:- dynamic color/4
和使用asserta(color(Red,Green,Blue,Alpha))
或者它应读:- dynamic color/1
和是用于asserta(color(red))
该组合/4
与/1
是不是你的意思。