、これが有効である:なぜ有効な再帰ターゲットはありませんか? Clojureので
(loop [a 5]
(if (= a 0)
"done"
(recur (dec a))))
はしかし、これではありません。
(let [a 5]
(if (= a 0)
"done"
(recur (dec a))))
は、だから私は思ったんだけど:なぜ彼らは両方(少なくとも事実を考えると、ループであり、分離してみましょう概念的に)字句バインディングを導入していますか?つまり、letはループしていないのに対し、loopは繰り返しターゲットですか?
EDIT:もともと私が気づいた "loop target"は間違っています。
よろしくお願いします。しかし、ジャンプするターゲットを指定する余分なオプションのargをなぜ再現しないのでしょうか?または、それはgotoの方向にあまりにも多くなるでしょう(そして、私たちは皆、Dijkstraがgotosについて何を言ったのか知っています)? – jjpe
@jjpeはループがあるので、再帰ターゲットではありません。 letが再帰ターゲットだった場合、ループは存在しませんでした。ループはletとまったく同じですが、反復ターゲットとしても機能します。 http://clojure.org/special_forms#loopを参照してください。 –