I have added a Common Lisp-like condition system to the Parenscript Object System (PSOS). Parenscript now has HANDLER-BIND, HANDLER-CASE, RESTART-CASE, RESTART-BIND, INVOKE-RESTART, and SIGNAL.
The patch that adds this is here: http://github.com/gonzojive/paren-psos/commit/6578ad223515dc2c1ddf49346f4baf... and totals about 200 lines, plus 200 lines of test cases. It could probably work without a type system at all, but it will require some runtime code no matter what.
The whole PSOS system is backed by a test suite that uses CL-Spidermonkey. Take a look at PSOS here: http://github.com/gonzojive/paren-psos for more details.
Enjoy!
Red
I just read the code now (yeah, it takes me a couple of months to do things), and WOW. I didn't know the CL condition system could be implemented so simply out of weaker primitives, and I didn't realize that the CL condition system is actually as simple as it is! All the CLHS and tutorial descriptions make it sound a lot more complicated.
Red, I like your implementation.
And just to state the apparent: dynamic scoping FTW.
Vladimir
2010/8/18 Red Daly reddaly@gmail.com:
I have added a Common Lisp-like condition system to the Parenscript Object System (PSOS). Parenscript now has HANDLER-BIND, HANDLER-CASE, RESTART-CASE, RESTART-BIND, INVOKE-RESTART, and SIGNAL.
The patch that adds this is here: http://github.com/gonzojive/paren-psos/commit/6578ad223515dc2c1ddf49346f4baf... and totals about 200 lines, plus 200 lines of test cases. It could probably work without a type system at all, but it will require some runtime code no matter what.
The whole PSOS system is backed by a test suite that uses CL-Spidermonkey. Take a look at PSOS here: http://github.com/gonzojive/paren-psos for more details.
Enjoy!
Red
parenscript-devel mailing list parenscript-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
parenscript-devel@common-lisp.net