[parenscript-devel] Why is there a WITH clause in my loop?

Daniel Gackle danielgackle at gmail.com
Tue Dec 7 06:03:52 UTC 2010


Here's a really strange one.

We have a form like the following. I've stripped it down for brevity, so it
looks weird:

(loop :for time :from time1 :below time2 :do
  (when (foo
         (λ ()
           (bar
            (λ () (blah)) time))
         time)
    (break)))

It used to generate this:

for (var time = time1; time < time2; time += 1) {
    if (foo(function () {
        return barr(function () {
            return blah();
        }, time);
    }, time)) {
        break;
    };
};

But now it generates this:

for (var time = time1; time < time2; time += 1) {
    with ({ time : time }) {
        if (foo(function () {
            return bar(function () {
                return blah();
            }, time);
        }, time)) {
            break;
        };
    };
};

That is one weird WITH clause in there! No doubt it has something
to do with lexical scoping magic going on under the hood. But
I definitely don't want it in a performance-critical loop.

Daniel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/parenscript-devel/attachments/20101206/d5af83dc/attachment.html>


More information about the parenscript-devel mailing list