在 swi-prolog 中将文本写入内存中的缓冲区?

Write text to a buffer in memory in swi-prolog?

这几乎就是我想要实现的目标。

process(P,Txt) :- 
    % do stuff and write messages to Txt, but not to std out.

start(P) :-
    process(P,Txt),
    write(Txt).   % now write to std out.

我可以用 SWI-Prolog 做这个吗?有没有办法将文本写入内存中的流,然后再输出该文本?

SWI-Prolog 提供了一些非标准但非常有用的功能,可以帮助您完成任务。其中之一是内存文件,可用于数据的临时缓冲。详情见:

http://www.swi-prolog.org/pldoc/man?section=memory-files

另一种选择是使用 with_output_to/2 内置谓词,它允许您写入例如和原子或稍后可以输出的字符串:

http://www.swi-prolog.org/pldoc/doc_for?object=with_output_to/2