我正在尝试使用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)).
答案 0 :(得分:2)
我会尝试这个(因为它是语法错误)
:- 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.
答案 1 :(得分:0)
操作员在错误消息中“反转”(或错误消息松散1个字符?),这很奇怪。 table指令可以生成错误'inside'(指令是库谓词调用),或者可以在咨询之前生成错误。
由于操作符声明的更改(即某些声明,如op(N,xfx,&lt;)或op(M,xfy,/)更改N关于M),可能是语法错误,或者样本可能未对齐当前表/ 3规范。
我会尝试(类似于thanosQR建议的),最简单的事情,更改指令并删除(冗余?)arity指示:
:- table sp(_,_,po(<)).