I'd like to read a plain text file and apply a predicate to each line (the predicates contain write
which does the output). How would I do that?
You can use read
to read the stream. Remember to invoke at_end_of_stream
to ensure no syntax errors.
Example:
readFile.pl
main :- open('myFile.txt', read, Str), read_file(Str,Lines), close(Str), write(Lines), nl. read_file(Stream,[]) :- at_end_of_stream(Stream). read_file(Stream,[X|L]) :- \+ at_end_of_stream(Stream), read(Stream,X), read_file(Stream,L).
myFile.txt
'line 0'. 'line 1'. 'line 2'. 'line 3'. 'line 4'. 'line 5'. 'line 6'. 'line 7'. 'line 8'. 'line 9'.
Thus by invoking main
you will recieve the output:
?- main. [line 0,line 1,line 2,line 3,line 4,line 5,line 6,line 7,line 8,line 9] true
Just configure main
. The output here is an example by using write
, of course. Configure to match your request.
I assume that this principle can be applied to answer your question. Good luck.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With