John Cowan <[EMAIL PROTECTED]> writes: > This design has a number of important implications: > > - The signaller can ensure that, even if all handlers decline to > handle the condition, some action will be taken as a last resort; > see, for instance, the example above of signalling warnings, which > we want to report somewhere even if all handlers decline to handle > the warning.
Correct if I'm wrong, but isn't this precisely the job of a potential future restart system? (I also looked into the issue of adding a restart system later, and I see nothing in R5.92RS that would prevent it or would make it unnecessarily difficult. Maybe you could be more specific.) I'm bothered by the fact that your chain of handlers passes control upwards until the very end, and then passes control *back in*. The discontinuity isn't bad in itself, but it seems strange that it's done implicitly rather than explicitly. The discontinuity is, as I understand it, exactly what distinguishes the exception system from the restart system in Common Lisp. Dealing with warning messages is easily accomplished by *not* declining and instead handling by printing and returning to the call to `raise-continuable'. The specific means of printing is more likely to be established further out than at the point of the raise. > - The condition signaller always has the power to decide whether > control may return to it; no condition handler may disagree, except > by semantics-violating features in a debugger. The default is that > control may not return to the signaller, which is what most programs > expect. This seems to exactly describe what's in R5.92RS. > - Only a constant amount of stack space separates the handler from the > signaller. This helps to avoid potential stack space shortage > issues, and it also helps to remove clutter from stack traces, which > are almost always computed from the continuation of a condition > handler (a debugger, again, being the most common example of a > condition handler). However, the stack trace might be useful. Also, "stack space shortage" is not really a common problem in Scheme implementations, at least not one where the exception system (i.e. the R5.92RS exception system) is a good place to deal with it. (This, IMHO, is the big deficiency with the CL system: It tries to deal with everything using the same mechanism.) -- Cheers =8-} Mike Friede, Völkerverständigung und überhaupt blabla _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
