Prolog:将 listing/1 的结果导出到文件

Prolog: Export the result of listing/1 to a file

我想export/save listing/1 在序言 "window" 中打印出的结果到一个文本文件。有什么办法吗?

我的代码:

parent(a,b).
parent(c,d).
parent(f,g).

list_items(G) :-
    current_predicate(G),
    listing(G).

以及我想保存到文本文件的 prolog 中的输出:

| ?- list_items(X).

% file: C:/GNU-Prolog/file.pl

parent(a, b).
parent(c, d).
parent(f, g).

X = parent/2 ? ;

% file: C:/GNU-Prolog/file.pl

list_items(A) :-
     current_predicate(A),
     listing(A).

 X = list_items/1 ? ;

 no

(如果有帮助,我正在使用 GNU prolog :D ) 谢谢你的帮助!!

您可以通过调用 tell/1 将流输出更改为文件,列出您想要的内容然后调用 told/0

例如:

  tell('MyListing.txt'), 
  listing(A), 
  told.

评论后编辑:

如果您打算让 listing/1 回溯所有匹配过程,那么您可能需要将 tell/listing/told 拆分为两个子句。

即:

list_items(A) :-
     tell('MyListing.txt'), 
     current_predicate(A),
     listing(A),
     fail.
list_items(_) :- told.