Prolog 跟踪如何使用



跟踪prolog程序时如何进行第二步?例如,我想跟踪以下简单程序:

length1([],0).
length1([_X|Xs],N):- length1(Xs,N1), N is N1+1.

我跟踪程序:

?- trace,length([1,2,3],N).
Call: (7) length([1, 2, 3], _G231) ? 
Exit: (7) length([1, 2, 3], 3) ? creep
N = 3.

但正如我们所看到的,它立即给出了答案。但我认为它应该像Call:(8) ... Call:(9) ...我做错了什么?

查看您的目标,您使用的是内置length/2,而不是您自己的length1/2。通常无法跟踪内置。

编译文件后(示例[length_program]。 ),您需要编写跟踪。然后运行您的命令,但我想您错过了拼写代码。您已将 pred 定义为 length1,因此您需要在跟踪后准确放置 length1