我正在为我的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的方式来做到这一点?