Prolog 从跟踪中隐藏模块/包
如何隐藏模块或整个包以防止跟踪。 我有这个问题,我想逐步解决,但是 我对CLP(X)所做的事情不感兴趣,只对我的查询失败的地方感兴趣Prolog 从跟踪中隐藏模块/包,prolog,trace,swi-prolog,Prolog,Trace,Swi Prolog,如何隐藏模块或整个包以防止跟踪。 我有这个问题,我想逐步解决,但是 我对CLP(X)所做的事情不感兴趣,只对我的查询失败的地方感兴趣 ?- X in 0..5, X in 7..8. fail. ?- dif(A, 1), A = 1. fail. 如果我在SWI Prolog中运行这个查询,它会显示每个漂亮的东西 模块CLP(X)的详细信息,而不仅仅是一些内联 与约束相关,但也与CLP(X)的所有其他内容相关: 是否有抑制CLP(X)内部的方法。对于 例如,如果我使用另一个Prolog系统
?- X in 0..5, X in 7..8.
fail.
?- dif(A, 1), A = 1.
fail.
如果我在SWI Prolog中运行这个查询,它会显示每个漂亮的东西
模块CLP(X)的详细信息,而不仅仅是一些内联
与约束相关,但也与CLP(X)的所有其他内容相关:
是否有抑制CLP(X)内部的方法。对于
例如,如果我使用另一个Prolog系统,我看不到任何
中电内部(X)(预览):
是否有一种优雅的方法可以禁用模块/包,但仍可以看到模块/包的顶级调用/退出?在SWI Prolog中有多种方法可以控制调试过程,请参阅。在这个can中,您可以使用
跳过
选项,该选项将“跳过此呼叫的退出端口或唤醒端口”。在Enter的跟踪输入期间按s可激活该选项
在本例中,跳过所有调用会产生一个与您的Jekejeke示例非常相似的跟踪(尽管格式不太好):
追踪CPLFD导致任何地方,而不是考虑推广和专业化!大多数情况下,它会显示标记失败。我通常希望使用
跟踪。
并仅隐藏clpfd。并不是所有的工作都在clpfd中进行。看起来建议不要使用跟踪。
而是使用跟踪(mypred/2,+all)。
SICStus的指令module/3
带有第三个参数[hidden(true)]
purpose@false注意那里的标签。
Welcome to SWI-Prolog (threaded, 64 bits, version 8.1.2)
?- trace.
true.
[trace] ?- X in 0..5, X in 7..8.
Call: (9) clpfd:clpfd_in(_2662, 0..5) ? creep
Call: (10) clpfd:fd_variable(_2662) ? creep
Call: (11) var(_2662) ? creep
Exit: (11) var(_2662) ? creep
Call: (11) true ? creep
Exit: (11) true ? creep
[trace] ?- dif(A, 1), A=1.
Call: (9) dif:dif(_3044, 1) ? creep
Exit: (9) dif:dif(_3410{dif = ...}, 1) ? creep
Call: (9) _3410{dif = ...}=1 ? creep
Jekejeke Prolog 3, Development Environment 1.3.6
?- trace.
Yes
?- X in 0..5, X in 7..8.
0 Call X in 0..5 ?
0 Exit X in 0..5 ?
0 Call X in 7..8 ?
0 Fail X in 7..8 ?
No
?- neq(A, 1), A = 1.
0 Call neq(A, 1) ?
0 Exit neq(A, 1) ?
0 Call A = 1 ?
0 Fail A = 1 ?
No
?- use_module(library(clpfd)).
true.
?- trace.
true.
[trace] ?- X in 0..5, X in 7..8.
Call: (9) clpfd:clpfd_in(_7788, 0..5) ? skip
Exit: (9) clpfd:clpfd_in(_8226{clpfd = ...}, 0..5) ? creep
Call: (9) integer(_8226{clpfd = ...}) ? skip
Fail: (9) integer(_8226{clpfd = ...}) ? creep
Call: (9) clpfd:clpfd_in(_8226{clpfd = ...}, 7..8) ? skip
Fail: (9) clpfd:clpfd_in(_8226{clpfd = ...}, 7..8) ? creep
false.