0
我把這部分代碼作爲遞歸謂詞中的基本情況。爲什麼prolog不能識別查詢中的參數?
riduci_lista_valori([[V, N]],m_var,Lr):-
member(V, m_var),
Lr =[N].
的問題是,當我執行我的查詢並不統一,其參數謂詞的正確的論點。
鑑於代碼,我的查詢是:riduci_lista_valori([[a, 5]], [c,e], F).
而且我希望Prolog返回F = [5]
。 調試代碼似乎不能正確識別參數,因爲它不像統一一樣:V = a
,N = 5
m_var = [c,e]
但它給出: 1 = [[a, 5]]
和2 = [c, e]
。
鑑於如果我提示:[[V, N]] = [[a,5]].
它使正確的統一: V = a
,N = 5
。
我在做什麼錯?謝謝!
感謝您的回答,我學到了一些關於聲明性debbugging的新知識。但你的最後一行拯救了我的夜晚:) –
s(X),這真是個好主意! –
你能否包含一個參考文件來解釋\擴展關於Prolog的'declarative debugging';特別是使用'op(920,fy,*)。'這是一個很好的技術,我想將它融入到我的Prolog工具箱中。如果你想這是一個單獨的問題只是問。也許它應該是一個帶有參考標籤的標籤,如[tag:failure-slice] –