#file-io #prolog
#файл-ввод-вывод #пролог
Вопрос:
Я использую swi prolog. Мой код выполняется для первой строки, но он не запускает остальные.
see(Data), //open file to read
repeat,
readln(A), //read line from file
write(A),
A==end_of_file,!.
Я получаю неожиданную ошибку завершения файла. У вас есть какие-нибудь идеи?
Ответ №1:
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 работает как repeat … до тех пор, пока
кстати, я бы предпочел рекурсивное решение … например
io(end_of_file):-
write(end_of_file).
io(_):-
readln(A),
write(A),
io(A).
кажется более декларативным.