*standard-input*
- это поток input , как следует из его названия. Это поток, из которого вы читаете, а не тот, в который вы пишете. Это также может быть выходной поток, но если он затем записывает в него, он не будет вставлять строки в REPL.
Я бы посоветовал посмотреть SLIME или SLY , если вы хотите понять, как использовать REPL и отладчики, которые взаимодействуют с вещами в потоке. В частности, SWANK , вероятно, является интересным понятием, или эквивалентом для SLY, который представляет собой SLYNK (или slynk, не уверенный в заглавных буквах). Реализации этих протоколов в различных Лиспах не совсем тривиальны, но реализации уже существуют : вам не нужно их писать. Скрининг интерфейса, созданного для взаимодействия с людьми, почти всегда является ужасным подходом: он оправдан только тогда, когда нет лучшего способа, и в этом случае есть лучший способ, на самом деле их как минимум два.
Я не ожидаю, что этот ответ убедит спрашивающего в чем-либо (см. Комментарии), но я оставлю его здесь на случай, если он может пригодиться кому-то в будущем.