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

What is this RESTART kludge?



Fine, let's require RESTART to take a block name, but not outlaw
(RESTART NIL).  I'm not sure I'd ever use (RESTART NIL), but if it is
not really screwing anyone, it's less confusing to leave it in.

    Let me raise a related issue.  Since (DEFUN FOO ...) includes an implicit
    restart block (implemented in either way).  Where does that restart
    block lie with respect to the code in &OPTIONAL and &AUX variables?

For use in error recovery, it is important to have the implicit BLOCK
surround the body, but NOT the variable initializations.  Re-doing the
inits is hardly ever what you want to do, not to mention the fact that
this would tend to clobber any repairs the user has made to variable
values.

    I agree with GLS that TAGBODY is a better name.  PROG has nothing to
    do with it.

Well, it's the body of a PROG (or PROG-like construct), not the body of
a tag.  All sorts of things are documented as having a body like a prog,
so this seems a natural way to describe what's going on at least to
those who already know Lisp.  Why pick on tags?  It's also a RETURN-BODY
and a SYMBOLS-ENCOUNTERED-AT-TOP-LEVEL-ARE-NOT-EVALUATED-BODY.

-- Scott