[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Issue: CONDITION-RESTARTS (Version 1)



I strongly favor this proposal; it removes the major objection that I
had to the CL condition system as it developed.

However, I don't favor the COPY-CONDITION function.  I don't think it's
necessary.  More importantly, you have not proposed any concrete specification
of what it does, and unless someone does, it cannot be included in the
language.  Fortunately, I think we can just drop it, as I doubt that any
portable program would use it in any significant way that could not just
as well be done with a tiny amount of code using other existing primitives.

I'd like to suggest for consideration a change to the arglist of the
SIGNAL-WITH-RESTARTS and ERROR-WITH-RESTARTS macros.  I'm not so sure that
my suggestion is a good one, however the issue I'm addressing is real:
these new macros are syntactically cumbersome, compared to the SIGNAL
and ERROR functions, because you have to write an explicit call to
MAKE-CONDITION.  This may encourage programmers not to use these new
macros, instead they might wrap a WITH-RESTARTS around a call to SIGNAL
or ERROR, which looks equivalent to SIGNAL-WITH-RESTART except for having
a nicer syntax, but fails to take advantage of your new feature of
association between restarts and conditions.  My suggestion is to
change the first subform of SIGNAL-WITH-RESTARTS and ERROR-WITH-RESTARTS;
currently it is a form that evaluates to a condition.  Instead, I propose
that it be a list of forms whose values are used as the arguments to
SIGNAL or ERROR or used in an equivalent fashion.  That way if you want
to use MAKE-CONDITION, you have to use one extra pair of parentheses, but
you can use all the other convenience features of SIGNA and ERROR such
as format strings.