我正在爲我的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的方式來做到這一點?