这正是我想要实现的目标。
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做到这一点吗?有没有办法将文本写入内存中的流,并在以后输出该文本?
答案 0 :(得分:1)
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