[parenscript-devel] BLOCK/RETURN-FROM
Daniel Gackle
danielgackle at gmail.com
Tue Jun 7 18:51:40 UTC 2011
Red,
While we're sort of on the topic... I recall that Vladimir liked your
implementation of conditions in PS quite a bit. If you have a minute, would
you care to summarize the basic idea? Alternatively I could just not be lazy
and go look at it :)
Daniel
On Tue, Jun 7, 2011 at 12:07 PM, Red Daly <reddaly at gmail.com> wrote:
> 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
>
> function foo() {
> try {
> var bar = function () {
> throw { 'ps-return-foo341' : 42 };
> };
> bar(); }
> catch (e) {
> if ('ps-return-foo341' in e)
> return e['ps-return-foo341'];
> else
> throw e;
> };
>
> 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
> https://github.com/gonzojive/paren-psos and
> https://github.com/gonzojive/parenscript
>
> Viva Parenscript!
>
> Red
>
>
> On Tue, Jun 7, 2011 at 11:40 PM, <sblist at me.com> wrote:
>
>> Hi,
>>
>> I was wondering if the BLOCK/RETURN-FROM feature in PS intends
>> to support the following case:
>>
>> (ps (defun foo ()
>> (flet ((bar () (return-from foo 42)))
>> (bar))))
>>
>> =>
>>
>> WARNING: Returning from unknown block FOO
>> "function foo() {
>> var bar = function () {
>> return 42;
>> };
>> return bar();
>> };"
>>
>> In order to try and get around the warning, I tried this:
>>
>> (ps (defun baz ()
>> (block foo
>> (flet ((bar () (return-from foo 42)))
>> (bar)))))
>>
>> =>
>>
>> WARNING: Returning from unknown block FOO
>> "function baz() {
>> var bar = function () {
>> return 42;
>> };
>> return bar();
>> };"
>>
>> but that didn't seem to work. Any ideas on how to achieve lexical
>> return here?
>>
>> - Scott
>>
>>
>> _______________________________________________
>> parenscript-devel mailing list
>> parenscript-devel at common-lisp.net
>> http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>>
>
>
> _______________________________________________
> parenscript-devel mailing list
> parenscript-devel at common-lisp.net
> http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/parenscript-devel/attachments/20110607/bebe965f/attachment.html>
More information about the parenscript-devel
mailing list