首先,我不是一个prolog程序员。我正在为学校做一项任务,我们建立了一个小型专家系统。我已选择使用prolog进行作业,并且我正在阅读本书:http://www.amzi.com/distribution/files/xsip_book.pdf。具体来说,我正在看第2章。
本书中有一个我想要使用的程序叫做#34;问。"它可以在第14页找到。询问,使用另一个名为"已知"记住问题的答案。我已经基本上复制了这个程序,以便在我的代码中使用,但是我得到了与"已知"相关的存在错误。程序。不是一个prolog程序员,我不知道如何调试它。希望有人可以提供帮助。
以下是我的代码示例:
| ?- species(X).
uncaught exception: error(existence_error(procedure,known/3),ask/2)
以下是代码:
species(limba) :- %There are a bunch of these
distribution(west_africa),
color(tan_with_black_streaks),
figure(plain),
janka_hardness(670),
workability(easy).
distribution(X) :- ask(distribution, X).
color(X) :- ask(color, X).
figure(X) :- ask(figure, X).
janka_hardness(X) :- ask(janka_hardness, X).
workability(X) :- ask(workability, X).
ask(A, V) :-
known(yes, A, V),
!.
ask(A, V) :-
known(_, A, V),
!,
fail.
ask(A, V) :-
write(A:V),
write('? : '),
read(Y),
asserta(known(Y, A, V)),
Y == yes.
答案 0 :(得分:0)
这个程序希望known/3
是动态的(你指的是这本书)。也就是说,它是在运行时创建和管理的。 Prolog文档告诉您如何声明动态谓词。您可能想要阅读它。 - 潜伏者