Как читать поток в 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.
Другие вопросы по тегам