author | Jan Wielemaker |
| Wed Apr 20 14:45:43 2022 +0000 |
committer | Wiki manager |
| Wed Apr 20 14:45:43 2022 +0000 |
commit | a752e83336825c266a07c4c292d0ca49f8f1783c |
tree | e791b34c546d905f9f99d413a988fe474df85ff6 |
parent | 5396d0d54bd7285e94e7477eee63e63900f30bdf |
diff --git a/FAQ/ReadDynamicFromFile.txt b/FAQ/ReadDynamicFromFile.txt
index 24fa988..d5fb9a7 100644
--- a/FAQ/ReadDynamicFromFile.txt
+++ b/FAQ/ReadDynamicFromFile.txt
@@ -14,22 +14,23 @@ data on a graph as arc/2 facts, this looks as follows.
:- dynamic arc/2.
load_arcs(File) :-
- retractall(arc(_,_)),
- open(File, read, Stream),
- call_cleanup(load_arcs(Stream),
- close(Stream)).
+ retractall(arc(_,_)),
+ setup_call_cleanup(
+ open(File, read, Stream),
+ load_arcs_from_stream(Stream),
+ close(Stream)).
-load_arcs(Stream) :-
- read(Stream, T0),
- load_arcs(T0, Stream).
+load_arcs_from_stream(Stream) :-
+ read(Stream, T0),
+ load_arcs(T0, Stream).
load_arcs(end_of_file, _) :- !.
load_arcs(arc(From, To), Stream) :- !,
- assert(arc(From, To)),
- read(Stream, T2),
- load_arcs(T2, Stream).
-load_arcs(Term, Stream) :-
- type_error(arc, Term).
+ assert(arc(From, To)),
+ read(Stream, T2),
+ load_arcs(T2, Stream).
+load_arcs(Term, _Stream) :-
+ type_error(arc, Term).
==
Of course you should adapt this code to your case. This code properly