Обычная лиспская борьба с байтом чтения / записи - PullRequest
2 голосов
/ 18 июня 2011

Я хочу иметь возможность записывать байты и читать их из стандартного ввода / вывода, но когда я пытаюсь это сделать в SBCL, я получаю ошибку «У потока нет подходящего метода [...]», почему это так и какЯ собираюсь сделать свой собственный поток, который может обрабатывать байты?

1 Ответ

4 голосов
/ 18 июня 2011

Это происходит потому, что стандартные потоки ввода и вывода - это потоки с типом элемента character, а не (unsigned-byte 8).Тип элемента потока обычно настраивается при открытии потока, что, в случае стандартного ввода / вывода, выполняется автоматически при запуске интерпретатора.

Однако в SBCL есть понятие двухвалентных потоков, который может поддерживать как символьный, так и байтовый ввод-вывод.Как это бывает, на моей машине

* (read-byte *standard-input* nil)
a

97
* (read-char *standard-input* nil)
a

#\a

работает нормально.Итак, какую версию SBCL вы используете?Мой SBCL 1.0.49.

...