![](https://secure.gravatar.com/avatar/2a052b62df166324b9607d6597f60bf9.jpg?s=120&d=mm&r=g)
Hi Vladimir, On 2009-11-27, at 5:24 PM, Vladimir Sedach wrote:
Just pushed patches that fix RETURNing of cond and symbol-macrolet. Let me know if you catch anything else amiss.
Thank you, Vladimir
2009/11/23 <sblist@me.com>:
On 2009-11-05, at 12:20 PM, sblist@me.com wrote: ...
This is still the case as of the latest commit, so code like this fails:
(ps (lambda () (cond ((foo? x) (loop for y in x do (foo y))) ((bar? x) x) (t t))))
This form now emits valid JS. However, using DOLIST instead of LOOP here causes a syntax error: (ps (lambda () (cond ((foo? x) (dolist (y x) (foo y))) ((bar? x) x) (t t)))) => "function () { if (foowhat(x)) { return for (var y = null, _js_idx1288 = 0; _js_idx1288 < x.length; _js_i\ dx1288 += 1) { y = x[_js_idx1288]; foo(y); }; } else if (barwhat(x)) { return x; } else { return true; }; };" Here is some more curious DOLIST behavior: SKYSHEET> (ps (lambda () (dolist (arg args) (foo arg)))) "function () { for (var arg = null, _js_idx1289 = 0; _js_idx1289 < args.length; _js_idx1289\ += 1) { arg = args[_js_idx1289]; foo(arg); }; };" SKYSHEET> (ps (lambda () (let ((x y)) (dolist (arg args) (foo arg))))) "function () { var x = y; return for (var arg = null, _js_idx1290 = 0; _js_idx1290 < args.length; _js_\ idx1290 += 1) { arg = args[_js_idx1290]; foo(arg); }; };" - Scott