Ответ 1
Вам нужно использовать FINISH-OUTPUT
.
В системах с буферизованными выходными потоками некоторый вывод остается в выходном буфере до тех пор, пока выходной буфер не будет заполнен (тогда он будет автоматически записан в пункт назначения), или выходной буфер будет опустошен.
Общие Lisp имеет три функции для этого:
-
FINISH-OUTPUT
, пытается гарантировать, что все выходные данные будут выполнены, и THEN вернется. -
FORCE-OUTPUT
, запускает оставшийся вывод, но НЕМЕДЛЕННО возвращается и НЕ ждет завершения всего вывода. -
CLEAR-OUTPUT
, пытается удалить любой ожидающий вывод.
Кроме того, T
в FORCE-OUTPUT
и FORMAT
, к сожалению, не совпадают.
-
FORCE-OUTPUT
/FINISH-OUTPUT
:T
-* terminal-io *
и <код > NIL -* standard-output *
-
FORMAT
:T
есть* standard-output *
это должно работать:
(формат t "asdf" )
(финиш-ноль); обратите внимание на NIL
(setq var (чтение))
Код>