ユーザーからインタラクティブにy/n (yes/no) の回答を得ようとする関数を書きました。回答が有効かどうかをテストし、そうでない場合はユーザーに再度要求します。
(defn get-valid-answer [question]
(println question)
(loop []
(let [ans (.trim (read-line))]
(if (#{"y" "n"} ans)
ans
(do (println "Please answer \"y\"[yes] or \"n\"[no] only!")
(recur) )))))
loop-recur を使用した上記のバージョンはその仕事をしますが、これを行うためのより良い (より機能的な) 方法が必要であると私はしつこく感じています。read-line 呼び出しを 1 回だけ行うことをお勧めします。このシナリオで loop-recur を使用せず、代わりに何らかの (Clojure 組み込み) マクロを使用する代替バージョンを誰かが提案できますか?