Dirk Gerrits wrote:
BTW, do Lisp implementations make any guarantees about which actions are atomic? For example, suppose *some-var* is bound to 10 and I type (setq *some-var* 42) in the REPL, will the running process see just the values 10 and 42, or might it inspect *some-var* when the assignment is still going on and see 'garbage'?
I do not know of any Common Lisp implementation where a SETQ to a global (special) variable is non-atomic. Since the Common Lisp specification (Hyperspec) make no mention of processes, threads, or interrupts, the Common Lisp standard makes NO GUARANTEE about any operation being atomic. The documentation for specific Common Lisp implementations might discuss what operations are guaranteed to be atomic with respect to process switching and interrupts.