diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-02-04 18:13:04 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-02-04 18:13:04 +0000 |
commit | 92c7fe2d253ea34ce6d10610c3248a1e321ee673 (patch) | |
tree | efde51d46151fda95c2a3d9f9bb9175672f03a34 /src | |
parent | 86dd57ad4e8d1cbe6a46a45d6eb5df5711373fe9 (diff) |
switched for to use let*
Diffstat (limited to 'src')
-rw-r--r-- | src/boot.clj | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/boot.clj b/src/boot.clj index 1b39584a..48b72634 100644 --- a/src/boot.clj +++ b/src/boot.clj @@ -1135,24 +1135,24 @@ (defmacro for ([seq-expr expr] (list `for seq-expr `true expr)) ([seq-exprs filter-expr expr] - (let [items (take-nth 2 seq-exprs) + (let* [items (take-nth 2 seq-exprs) seqs (map (fn [x] (list `seq x)) (take-nth 2 (drop 1 seq-exprs))) - gseqs (map (fn [x] (gensym (strcat (name x) "seq__"))) items) - gs (map (fn [x] (gensym (strcat (name x) "s__"))) items) + gseqs (map (fn [x] (gensym "seq__")) items) + gs (map (fn [x] (gensym "s__")) items) limit (dec (count items)) gloop (gensym "loop__") recur-list (fn [lvl] (concat (take (dec lvl) gs) [(list `rest (nth gs (dec lvl)))] (drop lvl gseqs))) emit (fn this [lvl] (list 'if (nth gs lvl) (if (= limit lvl) - `(let [~@(interleave items (map (fn [xs] (list `first xs)) gs))] + `(let* [~@(interleave items (map (fn [xs] (list `first xs)) gs))] (if ~filter-expr (lazy-cons ~expr (~gloop ~@(recur-list (inc lvl)))) (recur ~@(recur-list (inc lvl))))) (this (inc lvl))) (when (pos? lvl) (list* `recur (recur-list lvl)))))] - `(let [~@(interleave gseqs seqs) + `(let* [~@(interleave gseqs seqs) ~gloop (fn ~gloop [~@gs] ~(emit 0))] (~gloop ~@gseqs))))) |