:-[read_line2]. browse(File) :- seeing(Old), /* save for later */ see(File), /* open this file */ repeat, read_line(Data), /* read from File */ process(Data), seen, /* close File */ see(Old), /* previous read source */ !. /* stop now */ process([end_of_file]) :- !. process(Data) :- write(Data), nl, fail.