我必须在SWI中申明这类中电(FD)规则:
asserta(schedule(A,B) :- V = [S0,S1,S2],V ins 0..sup).但我知道这个错误:
ERROR: Syntax error: Operator expected
ERROR: asserta(schedule(A,B) :- V = [S0,S1,S2],V
ERROR: ** here **
ERROR: ins 0..sup) . 为什么?谢谢!
发布于 2013-09-02 18:24:02
这里有两个错误:
您需要在读取文本时加载CLP(FD)。因此,需要有一个use_module(library(clpfd)),或者像行中的指令那样
:- use_module(library(clpfd)).或者是作为一个目标进入了托普莱尔。这是必要的,因为您正在以运算符形式使用(ins)/2。
另一个问题是缺少括号。改为:
..., asserta( ( schedule(A,B) :- V = [_,_,_], V ins 0..sup ) ), ...顺便说一句,我认为断言这样一条规则没有多大意义。动态数据库很少与断言规则一起使用。
https://stackoverflow.com/questions/18577650
复制相似问题