Как взаимодействовать с процессом ввода / вывода в SBCL / Common Lisp
У меня есть текстовый файл с одним предложением в строке. Я хотел бы лемматизировать миры в каждой строке, используя hunspell (опция -s). Поскольку я хочу, чтобы леммы каждой строки были отдельно, не имеет смысла отправлять весь текстовый файл в hunspell. Мне нужно отправлять одну строку за другой и иметь вывод hunspell для каждой строки.
После ответов отКак обрабатывать входные и выходные потоки в Steel Bank Common Lisp?Мне удалось отправить весь текстовый файл для hunspell одну строку за другой, но я не смог зафиксировать вывод hunspell для каждой строки. Как взаимодействовать с процессом отправки строки и чтения результата перед отправкой другой строки?
Мой текущий код для чтения всего текстового файла
(defun parse-spell-sb (file-in)
(with-open-file (in file-in)
(let ((p (sb-ext:run-program "/opt/local/bin/hunspell" (list "-i" "UTF-8" "-s" "-d" "pt_BR")
:input in :output :stream :wait nil)))
(when p
(unwind-protect
(with-open-stream (o (process-output p))
(loop
:for line := (read-line o nil nil)
:while line
:collect line))
(process-close p))))))
Еще раз, этот код дает мне вывод hunspell для всего текстового файла. Я хотел бы иметь вывод hunspell для каждой строки ввода отдельно.
Любая идея?