readln / 1 не входит в руководство по swi-prolog, поэтому, возможно, вам следует включить код для этого
при условии, что он делает то, что вы говорите, код, вероятно, должен быть:
see(Data), //open file to read
repeat,
readln(A), //read line from file
write(A),
A=end_of_file,!.
структура "repeat / 0" работает как повтор ... до
на заметку, я бы предпочел рекурсивное решение ... как
io(end_of_file):-
write(end_of_file).
io(_):-
readln(A),
write(A),
io(A).
чувствует себя более декларативным.