如何在跟踪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) ...一样,我做错了什么?
发布于 2012-07-06 14:01:56
看看你的目标,你使用的是内置的length/2,而不是你自己的length1/2。内置的代码通常是无法追踪的。
发布于 2012-07-06 22:25:08
编译文件后(示例length_program。)您需要编写跟踪。然后运行您的命令,但我猜您没有拼写代码。您已经将pred定义为length1,因此需要在跟踪后精确地添加length1
https://stackoverflow.com/questions/11355151
复制相似问题