According to the standard, the variables *, **, and *** are updated
in the REPL only when form evaluation does not abort.
There is no such restriction on +, ++, and +++. However, sbcl
is not updating + when the form aborts:
This is SBCL 0.8.17.24, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (error "foo")
debugger invoked on a SIMPLE-ERROR in thread 19793: foo
You can type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT ] Reduce debugger level (leaving debugger, returning to toplevel).
1: [TOPLEVEL] Restart at toplevel READ/EVAL/PRINT loop.
:POLICY ((SAFETY . 3) (COMPILATION-SPEED . 2) (DEBUG . 2) (SPEED . 1)
(SPACE . 1) (INHIBIT-WARNINGS . 1))))[:EXTERNAL]
* (list + ++ +++)
('Z 'Y 'X)