说out_tofile(listing(relation),'relation.pl'). 更健壮一点,文本文件的唯一就地操作是向它们追加新文本。我不建议在这里这样做。附加日志文件就可以了。
:- meta_predicate
out_tofile(0,+), % out_tofile(:,+) in older versions
out_ontofile(0,+), % idem
out_tostream__andclose(0,+). % idem
out_tofile(Goal, File) :-
open(File,write,Stream),
out_tostream__andclose(Goal, Stream).
out_ontofile(Goal, File) :-
open(File,append,Stream),
out_tostream__andclose(Goal, Stream).
out_tostream__andclose(Goal, Stream) :-
current_output(Stream0),
call_cleanup((set_output(Stream),once(Goal)), set_output_close(Stream0, Stream)).
set_output_close(Stream0, Stream) :-
set_output(Stream0),
close(Stream).