Я пишу функцию для своей программы Clojure, которая считывает ввод с клавиатуры. Если пользователь вводит неверный ввод, пользователь предупреждается, а затем запрашивается снова. При использовании процедурного стиля в языке, как Python, я хотел бы сделать что-то вроде этого:Lispy способ читать пользовательский ввод с клавиатуры в Clojure?
while 1:
value = input("What is your decision?")
if validated(value):
break
else:
print "That is not valid."
Лучшее, что я могу придумать в Clojure это:
(loop [value (do
(println "What is your decision?")
(read-line))]
(if (validated value)
value
(recur (do
(println "That is not valid.")
(println "What is your decision?")
(read-line)))))
Это работает, но это избыточным и кажется многословным. Есть ли еще способ Lispy/Clojurey?