Предикат для чтения целых чисел из файла в (swi) прологе - PullRequest
2 голосов
/ 05 августа 2011

Я просматривал страницы справочника по IO в swi-prolog и не смог найти предикат для чтения целых чисел (или чисел) из файла / потока. В Google тоже ничего не нашел: |

Я знаю, как написать один, просто интересно, есть ли что-то встроенное, так как я предполагаю, что это будет быстрее.

Ответы [ 2 ]

3 голосов
/ 06 августа 2011

В SWI-Prolog есть библиотека (dcg_basics) в пакете "http". Он имеет нетерминальный номер DCG // 1, и вы можете использовать его с библиотекой (pio), то есть фразу_from_file / 2, для чтения непосредственно из файла (без необходимости читать весь файл сразу). В списке рассылки обсуждалось включение библиотеки (dcg_basics) в основные библиотеки, если вам интересно, проверьте архивы и отправьте письмо в список. Я думаю, что это было бы очень полезным дополнением к библиотекам.

2 голосов
/ 05 августа 2011

Если вы можете разделить свой ввод в список символов для каждого числа, библиотека charsio *1002* имеет следующий предикат:

read_from_chars(+Codes, -Term)

, который будет читатьтермин из списка символов без ожидаемого завершающего периода.

Библиотека readutil имеет предикаты для чтения списков символов из потоков, например:

read_stream_to_codes(+Stream, -Codes)

Должно быть простым делить список кодов на подсписки (разделенные запятой или пробелом?)

...