如何从Clojure中的嵌套列表或向量中按类型删除项?

dan*_*lmo 7 clojure nested-forms

有没有办法按类型删除嵌套列表中的项目(1 [2] 3(4 [5] 6))变为(1 3(4 6))如果我只想删除向量?

使用postwalk,我可以用nil替换所有向量,但我找不到删除它们的方法.

(clojure.walk/postwalk 
  #(if (vector? %) nil %) '(1 [2] 3 (4 [5] 6)))

=>(1 nil 3 (4 nil 6))
Run Code Online (Sandbox Code Playgroud)

Dan*_*ero 5

远非完美,但也许是一个好的开始:

 (clojure.walk/prewalk #(if (list? %) (remove vector? %) %) '(1 [2] 3 (4 [5] 6)))
Run Code Online (Sandbox Code Playgroud)