strange behavior of read/2
Jiun-Shiung Wu <[email protected]> Fri, 18 Apr 2014 11:30:36 +0800
| Newsgroups | gmane.comp.ai.prolog.swi |
|---|---|
| Message-ID | <CALvsX_JQurMHDhMpvMffodmB_vF+ma1w5PmRUahFoWqfqAG7wA@mail.gmail.com> |
Hi, SWI-prolog users,
I encountered a strange behavor of read/2 and any help will be appreciated.
I use readFiles/1 to read a file which contain a bunch of files names and
put the file names in a list. Then, I pass the list of file names to
corpus_process/2 etc.
When I run process_corpra, an error message shows up: ERROR: read/2: stream
`<stream>(035F4FB8)' does not exist. I trace read/2, I found that read/2 is
called again after the end_of_file marker.
But, when run readFiles/1 alone, a list is returned successfully. When I
trace everything, a list of file names is found successfully and passed to
corpus_process. But, when I run process_corpra under a non-degugging mode,
the above error message shows.
Could someone help me with this? Thank you!
Jiun-Shiung Wu
====
My codes are as below:
process_corpra :-
readFiles([HeadFile|TailFiles]),
corpus_process(HeadFile, Result),
del_space(Result, LMinusSpace),
name(T, LMinusSpace),
open('corpusDirProcessed.txt', write, Stream2, [encoding(utf8)]),
write(Stream2, T),
close(Stream2),
process_corpra_aux(TailFiles).
process_corpra_aux([]).
process_corpra_aux([HeadFile|TailFiles]) :-
corpus_process(HeadFile, Result),
del_space(Result, LMinusSpace),
name(T, LMinusSpace),
open('corpusDirProcessed.txt', append, Stream, [encoding(utf8)]),
write(Stream, T),
close(Stream),
process_corpra_aux(TailFiles).
readFile(Stream, ListofFiles) :-
read(Stream, File),
readFileAux(Stream, File, ListofFiles).
readFileAux(_, -1, []).
readFileAux(_, end_of_file, []).
readFileAux(Stream, File, [File|FileTail]) :-
read(Stream, File2),
readFileAux(Stream, File2, FileTail).
readFiles(ListofFiles) :-
open('corpusDir.txt', read, Stream, [encoding(utf8)]),
readFile(Stream, ListofFiles),
close(Stream).
-------------- next part --------------
HTML attachment scrubbed and removed