【问题标题】:SWI-Prolog : "false" where?SWI-Prolog:“假”在哪里?
【发布时间】:2016-12-23 22:11:13
【问题描述】:

通常当目标失败时,我会返回“错误”,即目标不满足。 有没有办法让 SWI-Prolog 打印它失败的子目标的谓词、行和/或序列号。 我不想跟踪整个程序,只是想要一些类似于其他编程语言的反馈。 我知道返回false 不是错误,但是在调试时,如果有这个反馈来查明问题会很好。当然可以的话。

谢谢

【问题讨论】:

    标签: prolog failure-slice


    【解决方案1】:

    您可能还想考虑使用@false 多次描述的“故障切片”技术:它有its own tag

    另外,请查看this great answer。您可以使用此处显示的代码来制作自己的“调试器”,让您(除其他外)完全按照您的要求行事。

    【讨论】:

      【解决方案2】:

      也许

      ...p1, p2, (p3;backtrace(10)), p4,...
      

      在 p3 失败后开始跟踪也很有用:

      ...p1, p2, (p3;backtrace(10),trace), p4,...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-16
        • 1970-01-01
        • 2014-12-22
        • 1970-01-01
        相关资源
        最近更新 更多