2017-06-03 27 views
3

我想跟踪SWI-Prolog中的内置附加/ 3,但是立即得到结果并且无法看到中间发生了什么。如何在SWI-Prolog中跟踪内置的append/3?

有什么我必须做的追踪追踪?

?- trace . 
true. 

[trace] ?- append([a,b,c], [[],[2,3], b], X). 
X = [a, b, c, [], [2, 3], b]. 
+2

为什么要跟踪'append/3'?如果您只想知道它是如何工作的,则SWI Prolog源代码可在线获取。 – lurker

回答

1

内置的Prolog函数不跟踪

+3

'append/3'是一个谓词,而不是一个函数。它也是一个图书馆谓词,而不是一个内置的谓词。 –

6

在SWI-Prolog中,所述append/3谓词的lists模块,其中包含了指令中所定义:

:- set_prolog_flag(generate_debug_info, false). 

这SWI-Prolog的专有指令指示编译器跳过模块内任何谓词定义的跟踪。如果您注释掉SWI-Prolog 安装lists.pl文件中的指令,则应该能够跟踪对模块中定义的谓词或任何其他谓词的调用。