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.
我想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.