Это происходит потому, что стандартные потоки ввода и вывода - это потоки с типом элемента character
, а не (unsigned-byte 8)
.Тип элемента потока обычно настраивается при открытии потока, что, в случае стандартного ввода / вывода, выполняется автоматически при запуске интерпретатора.
Однако в SBCL есть понятие двухвалентных потоков, который может поддерживать как символьный, так и байтовый ввод-вывод.Как это бывает, на моей машине
* (read-byte *standard-input* nil)
a
97
* (read-char *standard-input* nil)
a
#\a
работает нормально.Итак, какую версию SBCL вы используете?Мой SBCL 1.0.49.