Добавление новых фактов в файл на Прологе

У меня проблема в Prolog относительно добавления новых фактов в файл «Relations.pl». Каждый раз, когда я получаю факты, я сохраняю их и использую

tell('relations.pl').
listing(relation).
told.

Единственная проблема в том, что я хочу вставить новые факты и не хранить одни и те же факты больше одного, если они есть.

Есть какой-либо способ сделать это? Спасибо,


person Alaa    schedule 29.06.2014    source источник
comment
Вы можете добавить текст в файл, но будьте осторожны, это легко приводит к множеству ошибок и несоответствий. Вместо этого напишите все сразу.   -  person false    schedule 29.06.2014


Ответы (1)


Немного надежнее сказать 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).
person false    schedule 29.06.2014