Как взаимодействовать с процессом ввода / вывода в 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 для каждой строки ввода отдельно.

Любая идея?

Ответы на вопрос(1)

Ваш ответ на вопрос