Subject: bug#40671: [DOC] modify literal objects

From: Paul Eggert <[email-masked]>
Date: Tue, 28 Apr 2020 18:38:44 -0700

On 4/28/20 5:55 PM, Drew Adams wrote:
> You're _not_ using the language that's used for Common Lisp.

In what sense does the language differ? Here's a quote from CLtL2 (page 115):

"it is an error to destructively modify any object that appears as a constant
in executable code, whether within a 'quote' special form or as
a self-evaluating form."

This use of the word "constant" is consistent with what's in the emacs-27 doc.

> Elisp corresponds
> to the behavior of CLTL1 in this regard, not to any
> later update

Those older CLtL semantics were not well-defined, and to the extent that they
were defined were not followed by Common Lisp implementations. It's not clear
that the emacs-27 Elisp implementation corresponds to those older semantics, and
it's also not clear that documenting CLtL1 semantics would be a good idea for Elisp.

> A few mails ago, you wondered if the disagreement
> has been only about terminology.  And the response
> was mostly "Yes" - objections to your use of
> "mutable" and "constant"/"immutable", and your use
> of "cannot" instead of "should not" (aka "Don't").
> 
> You've since ignored that response, it seems.

I responded to those specific wording objections by removing the "immutable"s
and "cannots" that were objected to. At least, that was my intent; if I missed
something please let me know.

I admit I have not made changes in response to vaguer suggestions, but that's
partly because I don't really understand what's involved.