是否有可能通过合理的努力可视化PROLOG如何将结果发现给查询? 通过它找到的路径可以帮助理解,例如一些重复的条目(例如,在族树查询中找到两次亲戚)。
答案 0 :(得分:0)
AFAICR,拥有增强的纯Prolog解释器的标准方法是增加标准的纯Prolog解释器:
solve( T ):-
( T = (A,B) -> solve(A) , solve(B)
; T = (A;B) -> (solve(A) ; solve(B))
; A ).
我们可以在每一步使用copy_term/2
,并将复制的条款收集到差异列表中。
solve( T, [Q|R], Z ):- copy_term(T,Q),
( T = (A,B) -> solve(A,R,S) , solve(B,S,Z)
; T = (A;B) -> (solve(A,R,Z) ; solve(B,R,Z)) ;
; A, copy_term(A,Q), R=Z).
被称为solve( AQuery, PathTaken, [])
。
未经测试。
答案 1 :(得分:0)
我只能找到prolog-graph来执行相似任务,但还没有尝试过。作者声称"为给定的Prolog查询生成解析树的图像"。