title: Why no destructing in def form?
body: <p>In a <code>let</code> form (Clojure here) I can doing something like</p>
  
  <pre><code>(let [[u s v] (svd A)] 
     (do-something-with u v))
  </code></pre>
  
  <p>where <code>svd</code> returns a list of length three. This is a very natural sort of thing to do, so why isn't that we don't we have</p>
  
  <pre><code>(def [u s v] (svd A))
  </code></pre>
  
  <p>and its various generalizations as the default behavior of the <code>def</code> form? I don't see how this would interfere with anything that <code>def</code> is already doing. Can someone who understands the Zen of Lisp or Clojure explain why <code>def</code> does not support binding (with destructuring) as powerful as <code>let</code>?</p>