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] –