我想跟踪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].
我想跟踪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].
内置的Prolog函数不跟踪
'append/3'是一个谓词,而不是一个函数。它也是一个图书馆谓词,而不是一个内置的谓词。 –
在SWI-Prolog中,所述append/3
谓词的lists
模块,其中包含了指令中所定义:
:- set_prolog_flag(generate_debug_info, false).
这SWI-Prolog的专有指令指示编译器跳过模块内任何谓词定义的跟踪。如果您注释掉SWI-Prolog 安装中lists.pl
文件中的指令,则应该能够跟踪对模块中定义的谓词或任何其他谓词的调用。
为什么要跟踪'append/3'?如果您只想知道它是如何工作的,则SWI Prolog源代码可在线获取。 – lurker