0
新しいのリストを逆転ので、私はこのプロジェクトにジャンプする前にコアライブラリに慣れると、この質問に走ってきた4Clojureの質問を通過してきた:Clojureのは、やると再発形式のClojureに
// Write a function which reverses a sequence.
(= (__ [1 2 3 4 5]) [5 4 3 2 1])
これは単なるテスト・ケースの一つであるが、ここで私が思い付くていたものです:
(fn [x my-seq]
(if (empty? my-seq)
x
(do
(into x (take-last 1 my-seq))
(recur x (into [] (drop-last my-seq)))))) []
私は[]ので 私はそうのようにコードを変更しREPLでこのコードを実行した後、空のベクターを得ていました。
(fn [x my-seq]
(if (empty? my-seq)
x
(recur (into x (take-last 1 my-seq)) (into [] (drop-last my-seq))))) []
質問以前のコードが機能しなかったのはなぜですか?私にとってそれは論理的には同等であると思われますが、変更されたコードはdoフォームを避けるときれいに見えます。繰り返しますが、私はClojureを初めて使っていますので、私はdoとrecur形式に完全に精通していません。
これは不変性がある場所です。ありがとうございます – lest96