oh wait...I take a look on binding and with-binding* realesation.
http://github.com/richhickey/clojure/blob/f4c58e3500b3668a0941ca21f9aa4f444de2c652/src/clj/clojure/core.clj#L1251
Why with-binding* function wasn't write like this:
(defn with-bindings*
  [bindings f & args]
  (assert-args binding
    (vector? bindings) "a vector for its binding"
    (even? (count bindings)) "an even number of forms in binding
vector")
  (let [var-ize (fn [var-vals]
                  (loop [ret [] vvs (seq var-vals)]
                    (if vvs
                      (recur (conj (conj ret `(var ~(first vvs)))
(second vvs))
                             (next (next vvs)))
                      (seq ret))))]
  (push-thread-bindings (hash-map ~@(var-ize bindings)))
  (try
    (apply f args)
    (finally
      (pop-thread-bindings))))

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to