示例代码中的Prolog错误

时间:2015-11-21 19:33:21

标签: prolog

我正在读一本关于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)

1 个答案:

答案 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).

关于单身人士有一些警告,你错过了最后一点......我提供了