Пока работаю в Clojure, я написал очень базовую программу, чтобы эхо все, что пользователь вводит в нее. Однако это не работает так, как я считаю естественным. Здесь код:
(defn goo []
(print "echo> ")
(def resp (read-line))
(print resp)
)
Я бы ожидал, что код будет работать следующим образом (для ввода текста foo
в качестве входа в read-line
):
user=> (goo)
echo> foo
foonil
Вместо этого переключается эхо и линия чтения:
user=> (goo)
foo
echo> foonil
Почему это происходит? Есть ли у меня тонкость?
ИЗМЕНИТЬ: от ответа Джо, обновленное правильное решение:
(defn goo []
(print "echo> ")
(flush)
(def resp (read-line))
(print resp)
(flush)
)
Кроме того, флеши не нужны, если вы используете println
вместо print
.