diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-09-22 17:22:30 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-09-22 17:22:30 +0000 |
commit | cca74a2784a223c1de90f98b763be7f7f420c9ab (patch) | |
tree | f9dc9eb196921f6832e9783b77440a8411a11071 | |
parent | f1992b7337c4fc1e8c793391ac60dec74e18e95d (diff) |
using auto-gensyms
-rw-r--r-- | src/boot.clj | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/boot.clj b/src/boot.clj index 46287788..5210c76b 100644 --- a/src/boot.clj +++ b/src/boot.clj @@ -255,11 +255,10 @@ (defmacro locking [x & body] - (let [gsym (gensym)] - `(let [~gsym ~x] - (try-finally - (do (monitor-enter ~gsym) ~@body) - (monitor-exit ~gsym))))) + `(let [lockee# ~x] + (try-finally + (do (monitor-enter lockee#) ~@body) + (monitor-exit lockee#)))) (defmacro .. ([x form] `(. ~x ~form)) @@ -270,10 +269,9 @@ `(def ~name (new clojure.lang.PolyFn ~dispatch-fn))) (defmacro defmethod [polyfn dispatch-val & fn-tail] - (let [pvar (gensym)] - `(let [~pvar (the-var ~polyfn)] - (locking ~pvar - (. ~pvar (bindRoot (.. ~pvar (getRoot) (assoc ~dispatch-val (fn ~@fn-tail))))))))) + `(let [pvar# (the-var ~polyfn)] + (locking pvar# + (. pvar# (bindRoot (.. pvar# (getRoot) (assoc ~dispatch-val (fn ~@fn-tail)))))))) (defmacro binding [bindings & body] (let [var-ize (fn [var-vals] |