At one point I had this implemented using try-catch unless Parenscript's compiler could prove (rather naively) that the return-from clause was always executed.  I am usually way behind the official branch, and I'm not sure if my changes ever made it in, and if they did if this case is a bug.  Anyway it would do something like<div>
<br></div><div><meta charset="utf-8">function foo() {</div><div>   try {<br>   var bar = function () {<br>       throw { 'ps-return-foo341' : 42 };<br>   };</div><div>    bar(); }<br>   catch (e) {</div><div>      if ('ps-return-foo341' in e)</div>
<div>         return e['ps-return-foo341'];</div><div>      else</div><div>           throw e;</div><meta charset="utf-8"><meta charset="utf-8"><div>};</div><div><br></div><div>verbose, but it should always work.  other try-catch tricks allow lisp-style conditions, which I detailed in a post in this list within the year.  in case of group interest the relevant code is available at <a href="https://github.com/gonzojive/paren-psos">https://github.com/gonzojive/paren-psos</a> and <a href="https://github.com/gonzojive/parenscript">https://github.com/gonzojive/parenscript</a></div>
<div><br></div><div>Viva Parenscript!</div><div><br></div><div>Red<br><br><div class="gmail_quote">On Tue, Jun 7, 2011 at 11:40 PM,  <span dir="ltr"><<a href="mailto:sblist@me.com">sblist@me.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi,<br>
<br>
I was wondering if the BLOCK/RETURN-FROM feature in PS intends<br>
to support the following case:<br>
<br>
(ps (defun foo ()<br>
          (flet ((bar () (return-from foo 42)))<br>
            (bar))))<br>
<br>
=><br>
<br>
WARNING: Returning from unknown block FOO<br>
"function foo() {<br>
    var bar = function () {<br>
        return 42;<br>
    };<br>
    return bar();<br>
};"<br>
<br>
In order to try and get around the warning, I tried this:<br>
<br>
(ps (defun baz ()<br>
          (block foo<br>
            (flet ((bar () (return-from foo 42)))<br>
              (bar)))))<br>
<br>
=><br>
<br>
WARNING: Returning from unknown block FOO<br>
"function baz() {<br>
    var bar = function () {<br>
        return 42;<br>
    };<br>
    return bar();<br>
};"<br>
<br>
but that didn't seem to work. Any ideas on how to achieve lexical<br>
return here?<br>
<br>
        - Scott<br>
<br>
<br>
_______________________________________________<br>
parenscript-devel mailing list<br>
<a href="mailto:parenscript-devel@common-lisp.net">parenscript-devel@common-lisp.net</a><br>
<a href="http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel" target="_blank">http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel</a><br>
</blockquote></div><br></div>