2012-07-06 36 views
3

如何在trace prolog程序时进行第二步? 例如,我想跟踪下面的程序:prolog trace如何使用

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

回答

5

看着你的目标,你使用了内置的length/2,而不是你自己的length1/2。内置插件通常无法追踪。

+1

我犯了一个愚蠢的错误!谢谢! :) – 2012-07-06 08:08:34

1

编译完你的文件后(例如[length_program]。)你需要写trace。 然后运行你的命令,但我猜你错过拼写代码。你已经将你的pred定义为length1,所以你需要在你的trace后加上length1。