在 lisp 中,我可以将参数传递给函数并在函数内对其进行更改。(AKA 破坏性功能)。但是,在 Clojure 中,我在某处读到不允许更改同一函数中的给定参数。例如:
(defn add-two-lists [list1 list2]
(for [n (range (count list1))]
(+ (nth list1 n) (nth list2 n))))
这是一个普通函数,它的输出是两个相同列表的相加。但是,我想要这样的东西:
(defn add-two-lists [list1 list2 added_list]
(set! added_list
(for [n (range (count list1))]
(+ (nth list1 n) (nth list2 n)))))
也许我的使用set!
错误或误用,我仍然得到错误。有没有一种优雅的方式来破坏性地修改 Clojure 中的参数?