I was surprised that clojure/binding doesn't support destructuring bind:

Clojure
user=> (def a)
#'user/a
user=> (def b)
#'user/b
user=> (binding [[a b] [1 2]] (+ a b))
java.lang.ClassCastException: clojure.lang.LazilyPersistentVector  
cannot be cast to clojure.lang.Symbol (NO_SOURCE_FILE:3)
user=>

I took a look at implementing it and it looks non-trivial. The vector  
emitted by destructure contains a mixture of bindings for generated  
symbols and bindings for the target symbols. If one could reliably  
identify the generated symbols, it would be possible to put the call  
to var-ize inside a destructured let of the same bindings to produce,  
e.g., {(var a) a (var b) b}, etc. to pass along to pushThreadBindings.

If it's feasible, it's a feature I'd like to see in Clojure at some  
point.

--Steve


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to