prolog trace如何使用

时间:2012-07-06 02:39:29

标签: prolog trace

跟踪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) ...我做错了什么?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

在编译文件后(例如[length_program]。),你需要编写跟踪。 然后运行你的命令,但我猜你错过拼写代码。你已经将你的pred定义为length1,所以你需要在跟踪之后准确地设置length1