Lisp では、引数を関数に渡して、関数内で変更することができます。(AKA 破壊関数)。ただし、Clojure では、同じ関数内で指定された引数を変更することは許可されていないことをどこかで読みました。例えば:
(defn add-two-lists [list1 list2]
(for [n (range (count list1))]
(+ (nth list1 n) (nth list2 n))))
これは通常の関数であり、その出力は 2 つの同一のリストの加算です。ただし、次のようなものが必要です。
(defn add-two-lists [list1 list2 added_list]
(set! added_list
(for [n (range (count list1))]
(+ (nth list1 n) (nth list2 n)))))
おそらく、私の使用法set!
が間違っているか誤用されているため、まだエラーが発生します。Clojureで引数を破壊的に変更するエレガントな方法はありますか?