如何将listing/0
SWI-Prolog REPL 中的输出写入文件?
?- listing > file.txt.
您可以像这样打开一个文件进行写入并重定向current_ouput
到它:
?- current_output(Orig), % save current output
open('file.txt', write, Out),
set_output(Out),
listing,
close(Out),
set_output(Orig). % restore current output
或者,SWI-Prolog 提供了一个谓词with_output_to/2
,可用于将当前输出重定向到一个目标。请务必阅读文档,但简而言之:
?- open('file.txt', write, Out),
with_output_to(Out, listing),
close(Out).
现在的输出listing/0
将被写入file.txt
. 但请记住,里面会有很多东西。您可能想listing/1
用于特定谓词?在这种情况下,使用clause/2
andportray_clause/2
是另一种选择,特别是如果您想更好地控制写入文件的内容和方式。listing
我猜仅用于交互式使用。