summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-02-04 18:13:04 +0000
committerRich Hickey <richhickey@gmail.com>2008-02-04 18:13:04 +0000
commit92c7fe2d253ea34ce6d10610c3248a1e321ee673 (patch)
treeefde51d46151fda95c2a3d9f9bb9175672f03a34 /src
parent86dd57ad4e8d1cbe6a46a45d6eb5df5711373fe9 (diff)
switched for to use let*
Diffstat (limited to 'src')
-rw-r--r--src/boot.clj10
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)))))