Clojure 将嵌套映射分解为键值对

Clojure 将嵌套映射分解为键值对,clojure,Clojure,我想将Clojure中的嵌套映射分解为一系列键值对。例如,让我们看一下这张地图: {:a :b :c {:d {:e :f :g :h} :i :j}} 此贴图应如下所示: [[:a :b] [:c {:d {:e :f :g :h} :i :j}] [:d {:e :f :g :h}] [:e :f] [:g :h] [:i :j]] 输出的顺序并不重要 我正在考虑使用递归函数,tree-seq或cloju

我想将Clojure中的嵌套映射分解为一系列键值对。例如,让我们看一下这张地图:

{:a :b
 :c {:d {:e :f
         :g :h}
     :i :j}}
此贴图应如下所示:

[[:a :b]
 [:c {:d {:e :f
          :g :h}
      :i :j}]
 [:d {:e :f
      :g :h}]
 [:e :f]
 [:g :h]
 [:i :j]]
输出的顺序并不重要


我正在考虑使用递归函数,
tree-seq
clojure.walk
来解决这个问题。我怀疑我可能遗漏了Clojure标准库中的某些内容。实现这一点的最佳解决方案是什么?

这里有一个使用
树序列的解决方案:

(defn decompose [m]
  (mapcat (partial tree-seq (comp map? val) val) m))

这将生成一系列的
MapEntry
s.

谢谢!我可以补充一点,这会在ClojureScript中生成一系列向量。