Hi
Experimenting with clojurescript, confused about loop structures.
Having a simple expression:
(for [x (range 1 10)]
(.log js/console x))
I get nothing logged.
My optimization is set to :whitespace.
The construction is compiled into rather large blob of code:
var iter__4379__auto___5647 = function iter__5643(s__5644) {
return new cljs.core.LazySeq(null, function() {
var s__5644__$1 = s__5644;
while (true) {
var temp__4126__auto__ = cljs.core.seq.call(null, s__5644__$1);
if (temp__4126__auto__) {
var s__5644__$2 = temp__4126__auto__;
if (cljs.core.chunked_seq_QMARK_.call(null, s__5644__$2)) {
var c__4377__auto__ = cljs.core.chunk_first.call(null, s__5644__$2);
var size__4378__auto__ = cljs.core.count.call(null, c__4377__auto__);
var b__5646 = cljs.core.chunk_buffer.call(null, size__4378__auto__);
if (function() {
var i__5645 = 0;
while (true) {
if (i__5645 < size__4378__auto__) {
var x = cljs.core._nth.call(null, c__4377__auto__, i__5645);
cljs.core.chunk_append.call(null, b__5646, alert("test"));
var G__5648 = i__5645 + 1;
i__5645 = G__5648;
continue;
} else {
return true;
}
break;
}
}()) {
return cljs.core.chunk_cons.call(null, cljs.core.chunk.call(null,
b__5646), iter__5643.call(null, cljs.core.chunk_rest.call(null, s__5644__$2)));
} else {
return cljs.core.chunk_cons.call(null, cljs.core.chunk.call(null,
b__5646), null);
}
} else {
var x = cljs.core.first.call(null, s__5644__$2);
return cljs.core.cons.call(null, alert("test"), iter__5643.call(null,
cljs.core.rest.call(null, s__5644__$2)));
}
} else {
return null;
}
break;
}
}, null, null);
};
Using loop / recur instead
(loop [x 0]
(if (< x 10)
(do (.log js/console x)
(recur (+ x 1)))))
Works as expected and compiles to:
while (true) {
if (x_5667 < 10) {
towers.core.log.call(null, x_5667);
var G__5668 = x_5667 + 1;
x_5667 = G__5668;
continue;
} else {
}
break;
}
Am I missing out something? It for / range loop supposed to work?
Thanks!
--
Note that posts from new members are moderated - please be patient with your
first post.
---
You received this message because you are subscribed to the Google Groups
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.