キーボードからユーザー入力を読み取る Clojure プログラムの関数を作成しています。ユーザーが無効な入力を入力すると、警告が表示され、再度プロンプトが表示されます。Python のような言語で手続き型スタイルを使用する場合、次のようにします。
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 の方法はありますか?