2017-06-03 39 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文件中的指令,則應該能夠跟蹤對模塊中定義的謂詞或任何其他謂詞的調用。