How can I get the nested keys of a map in clojure?

后端 未结 11 1172
梦如初夏
梦如初夏 2020-12-15 10:59

if my structure is

{ :a :A
  :b :B
  :c {
       :d :D
     }
  :e {
       :f {
            :g :G
            :h :H
          }
     }
}

I

11条回答
  •  没有蜡笔的小新
    2020-12-15 11:21

    This answer of mine is just to illustrate how NOT to do it since it is still procedural.

    (defn keys-in [data] (genkeys [] data))
    
    (defn genkeys [parent data]
      (let [mylist (transient [])]
        (doseq [k (keys data)]
          (do
            (if ( = (class (k data)) clojure.lang.PersistentHashMap )
              (#(reduce conj! %1 %2) mylist (genkeys (conj parent  k ) (k data) ))
              (conj! mylist  (conj parent  k ) )
              )))
        (persistent! mylist)))
    

提交回复
热议问题