3

如何将listing/0SWI-Prolog REPL 中的输出写入文件?

?- listing > file.txt.
4

1 回答 1

8

您可以像这样打开一个文件进行写入并重定向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/2andportray_clause/2是另一种选择,特别是如果您想更好地控制写入文件的内容和方式。listing我猜仅用于交互式使用。

于 2015-09-14T11:08:07.450 回答