Как читать поток в Eclipse CLP?
Я новичок в Eclipse и безуспешно пытаюсь прочитать поток файлов. Код, который я обычно использую для этого в SWI-Prolog, таков:
read_until_stop(File, [L|Lines]) :-
read_line_to_codes(File, Codes),
Codes \= end_of_file,
atom_codes(L, Codes),
L \= stop,
!,
read_until_stop(File, Lines).
read_until_stop(_, []).
Но read_line_to_codes
недоступно в Eclipse, по-видимому. Что является хорошей альтернативой для этого?
2 ответа
Я думаю, что read_line_to_codes/2 может быть легко реализована в ECLiPSe, но для эффективности повторного использования доступных встроенных функций. Вы можете сделать с read_line/ 2.
Попробуй определить
:- use_module(library(util)).
read_line_to_codes(S, L) :- read_line(S, L).
или просто позвоните read_line...
Как предполагает руководство Eclipse, аналог Eclipse будет
read_line(Stream, String) :-
read_string(Stream, end_of_line, _Length, String).
с той разницей, что read_string возвращает фактическую строку в отличие от списка кодов, т.е. atom_codes
больше не нужно:
?- read_string(input, end_of_line, Length, String).
abcdefghi
Length = 9
String = "abcdefghi"
yes.