Generally, the idea is to implement a runtime function called SIGNAL in Parenscript and use JS's try/catch to work with the stack.
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 :)DanielOn Tue, Jun 7, 2011 at 12:07 PM, Red Daly <reddaly@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 likefunction foo() {try {
var bar = function () {
throw { 'ps-return-foo341' : 42 };
};bar(); }
catch (e) {if ('ps-return-foo341' in e)return e['ps-return-foo341'];elsethrow 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/parenscriptViva Parenscript!RedOn Tue, Jun 7, 2011 at 11:40 PM, <sblist@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@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
_______________________________________________
parenscript-devel mailing list
parenscript-devel@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
_______________________________________________
parenscript-devel mailing list
parenscript-devel@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel