title: Why does destructuring work for walk but not postwalk in Clojure?
body: <p>I can walk the top-level of the following map using <code>walk</code> in Clojure:</p>
  
  <pre><code>(use 'clojure.walk)
  (walk (fn [[k v]] (println (type k) k v)) identity {:a 1 :b {:c 3}})
  </code></pre>
  
  <p>Result:</p>
  
  <pre><code>clojure.lang.Keyword :b {:c 3}
  clojure.lang.Keyword :a 1
  {}
  </code></pre>
  
  <p>(This works in a very similar way to <code>map</code>)</p>
  
  <p>But when I use <code>postwalk</code> - it blows up trying to do destructuring:</p>
  
  <pre><code>(postwalk (fn [[k v]] (println (type k) k v)) {:a 1 :b {:c 3}})
  </code></pre>
  
  <p>Result:</p>
  
  <pre><code>UnsupportedOperationException nth not supported on this type: Keyword  clojure.lang.RT.nthFrom (RT.java:857)
  </code></pre>