我正在尝试XSB版本3.3.5手册中的一个示例(来自“偏序答案包含”):
:- table sp(_,_,po(</2)).
sp(X,Y,1):- edge(X,Y).
sp(X,Z,N):- sp(X,Y,N1),edge(Y,Z),N is N1 + 1.然后我就得到了
++Error[XSB/Runtime/P]: [Syntax] :- table sp ( _ , _ , po ( >/ <--- HERE? ************
++ 2 ) ) 知道出什么事了吗?
同样,也没有错误
:- table sp(_,_,lattice(min/3)).发布于 2011-11-20 15:28:22
我会尝试这样做(因为这是一个语法错误)
:- table sp(_,_,po('<'/2)).
sp(X,Y,1):- edge(X,Y).
sp(X,Z,N):- sp(X,Y,N1),edge(Y,Z),N is N1 + 1.发布于 2011-11-20 16:26:40
奇怪的是,操作符在错误消息中‘反向’(或者错误消息少了1个字符?)。table指令可能会生成错误'inside‘(指令是库谓词调用),或者错误可能是在咨询之前生成的。
可能是由于运算符声明中的更改而导致的语法错误(例如,某些声明,如op(N,xfx,<)或op(M,xfy,/)更改N认为M),或者样本可能在当前的table/3规范中未对齐。
我会尝试(类似于thanosQR建议的),最简单的事情,更改指令并删除(冗余?)数量指示:
:- table sp(_,_,po(<)).https://stackoverflow.com/questions/8199227
复制相似问题