Prolog存在错误异常

时间:2017-03-08 21:39:29

标签: debugging exception prolog

首先,我不是一个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.

1 个答案:

答案 0 :(得分:0)

这个程序希望known/3是动态的(你指的是这本书)。也就是说,它是在运行时创建和管理的。 Prolog文档告诉您如何声明动态谓词。您可能想要阅读它。 - 潜伏者