我想跟蹤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