21
In a let form (Clojure here) I can doing something like
(let [[u s v] (svd A)]
(do-something-with u v))
where svd 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
(def [u s v] (svd A))
and its various generalizations as the default behavior of the def form? I don't see how this would interfere with anything that def is already doing. Can someone who understands the Zen of Lisp or Clojure explain why def does not support binding (with destructuring) as powerful as let?