我正在尝试将一个简单的 Turbo Prolog 问题转换为 Visual Prolog 7.1
原始的 Turbo Prolog 代码如下。
DOMAINS
s=string sl=s* sll=sl*
PREDICATES
select(sl,s,sl)
solve(sll)
CLAUSES
select([A|B],A,B).
select([A|B],C,[A|D]):- select(B,C,D).
solve([["Anna",A,A],["Kate",Vp,Vt], ["Natasha",Np,"green"]]):-
select(["white","green","blue"],A,ColPl),
select(["white","blue"],A,[Vt]), Vt<>"white",
select(ColPl,Vp,[Np]), Vp<>"white", Np<>"green".
并且它的结果列表被输出,solve(Out)
并为 Turbo Prolog 控制台提供了正确的结果。
尝试将其转换为 Visual Prolog 时,我在第 33 行收到错误 c502。
implement main
open core
constants
className = "main".
classVersion = "".
domains
s=string.
sl=s*.
sll=sl*.
%
class predicates
select:(sl,s,sl) nondeterm anyflow.
solve:(sll) nondeterm anyflow.
%
clauses
%
select([A|B],A,B).
select([A|B],C,[A|D]):- select(B,C,D).
%
solve([["Anna",A,A],["Kate",Vp,Vt],["Natasha",Np,"green"]]):-
select(["white","green","blue"],A,ColPl),
select(["white","blue"],A,[Vt]), Vt<>"white",
select(ColPl,Vp,[Np]), Vp<>"white", Np<>"green".
clauses
classInfo(className, classVersion).
clauses
run():-
console::init(),
%ERROR AFTER THIS LINE
stdIO::writef("%", solve(Out)),fail().
end implement main
goal
mainExe::run(main::run).
我从这个错误中得到的是solve(Out)
它没有提供任何打印内容。我不知道如何更改代码以生成要打印的内容。
我是 Prolog 的初学者,我不知道如何解决这个问题,谷歌也没有多大帮助,这似乎是一个非常模糊的问题。
谢谢!