我正在读一本关于prolog的书,并尝试粘贴他们的示例代码,看看它是如何工作的,我得到了错误。这段代码出了什么问题。
path(X,Y)←
path(X,Y,[X]).
path(X,X,Visited).
path(X,Z,Visited)←
edge(X,Y),
not member(Y,Visited),
path(Y,Z,[Y|Visited]).
member(X,[X|Y]).
member(X,[Y|Z])←
member(X,Z)
答案 0 :(得分:0)
在SWI-Prolog中,以下声明使您的代码可编辑
:- op(1200, xfx, ←).
:- op(900, fy, not).
:- multifile term_expansion/2.
term_expansion((H←B), (H:-B)).
term_expansion((not B), (\+ B)).
path(X,Y)←
path(X,Y,[X]).
path(X,X,Visited).
path(X,Z,Visited)←
edge(X,Y),
not member(Y,Visited),
path(Y,Z,[Y|Visited]).
member(X,[X|Y]).
member(X,[Y|Z])←
member(X,Z).
关于单身人士有一些警告,你错过了最后一点......我提供了