递归删除并替换clojure中的项目

时间:2018-02-28 09:07:04

标签: replace clojure

我的问题是从列表中删除项目并将其替换为新值。 例如,如果我有列表'(F J (N R D A)),我想用一个全新的列表替换它,例如'(F J (M G E Q F))。所以我将删除最里面的列表并用新的列表替换它。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以使用clojure.walk递归替换数据结构的元素:

(def my-list '(F J (N R D A)))
(walk/postwalk
  #(if (= '(N R D A) %)
     '(M G E Q F)
     %)
  my-list)
=> (F J (M G E Q F))

答案 1 :(得分:0)

怎么样:

(replace {'(N R D A) '(M G E Q F)} '(F J (N R D A))) => (F J (M G E Q F))