From: Michael Heerdegen <michael_heerdegen@web.de>
To: Paul Eggert <eggert@cs.ucla.edu>
Cc: "Mattias Engdegård" <mattiase@acm.org>,
"Dmitry Gutov" <dgutov@yandex.ru>,
40671@debbugs.gnu.org, "Richard Stallman" <rms@gnu.org>,
ke.vigouroux@laposte.net
Subject: bug#40671: [DOC] modify literal objects
Date: Mon, 11 May 2020 02:00:15 +0200 [thread overview]
Message-ID: <87mu6ftk6o.fsf@web.de> (raw)
In-Reply-To: <41d69e2e-561f-743a-e1f0-282b2e22b66c@cs.ucla.edu> (Paul Eggert's message of "Sun, 10 May 2020 10:29:21 -0700")
Paul Eggert <eggert@cs.ucla.edu> writes:
> I'm attaching two patches.
Thanks for the continued work on this, I appreciate the improvements and
the general direction. I may have missed parts of the discussion
recently, sorry if some comments are unsubstantial.
So, a few questions about the patches:
> + Although numbers never change and all markers are mutable,
> +some types have members some of which are mutable and others not. These
> +types include conses, vectors, strings, and symbols. For example,
> +although @code{"aaa"} yields a string that should not be changed,
> +@code{(make-string 3 ?a)} yields a mutable string that can be
> changed via later calls to @code{aset}.
Is this a good statement? The string read syntax, and the syntax for
lists makes it easy to make such objects part of a program. But all
classes of objects you call mutable can end up as part of a program.
Are there any classes of "types" where all members are always mutable?
Second point: you mix up objects vs. object evaluation. For conses you
speak about the objects, for symbols about the binding (i.e. the result
of the evaluation). Conses can also be evaluated (most programs are
conses), but that's surely not what you want to describe. I would not
say symbols are mutable. Symbols are constant AFAICT, their bindings
are not (variables are not constant).
> + A mutable object stops being mutable if it is part of an expression
> +that is evaluated. For example:
FWIW, I would feel better about the word "mutable" if you would
introduce the term like "safely mutable", and then say that we call it
just "mutable" in the following sections because this is shorter. Drew
mentioned his dislike for the term "safe" AFAIR but I think "my Emacs
won't crash if I follow this" vs. "it can crash" describes some kind of
safety. Ignore if this comment is irrelevant because this is already
done or treated otherwise.
> + When the same value appears multiple times in a program, the Lisp
> +interpreter might save time or space by reusing existing values or
> +their components. For example, @code{(eq "abc" "abc")} returns
I think we call "values" what evaluation of expressions yields, so
values don't appear in a program (to be read). I don't know the
backgrounds and when this can happen. Is it always the interpreter that
does this mapping?
"Same syntax" is not good as well:
(eq (list 1 2 3) (list 1 2 3))
doesn't provoke the pitfall you warn about, but your wording doesn't
make clear why the one case is ok and the other is not. Maybe it's
again as simple as saying something about objects as being part of a
program?
Thanks again,
Michael.
next prev parent reply other threads:[~2020-05-11 0:00 UTC|newest]
Thread overview: 170+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-16 19:28 bug#40671: [DOC] modify literal objects Kevin Vigouroux via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-04-17 16:09 ` Mattias Engdegård
2020-04-17 16:37 ` Mattias Engdegård
2020-04-17 17:27 ` Eli Zaretskii
2020-04-18 20:10 ` Paul Eggert
2020-04-18 21:54 ` Drew Adams
2020-04-19 2:39 ` Noam Postavsky
2020-04-19 20:39 ` Paul Eggert
2020-04-19 21:01 ` Drew Adams
2020-04-19 21:16 ` Paul Eggert
2020-04-19 22:24 ` Drew Adams
2020-04-19 22:51 ` Paul Eggert
2020-04-20 5:32 ` Drew Adams
2020-04-22 17:36 ` Paul Eggert
2020-05-01 3:03 ` Dmitry Gutov
2020-05-01 5:16 ` Drew Adams
2020-05-01 21:46 ` Paul Eggert
2020-05-01 23:37 ` Dmitry Gutov
2020-04-19 2:26 ` Richard Stallman
2020-04-19 13:56 ` Eli Zaretskii
2020-04-19 16:59 ` Mattias Engdegård
2020-04-19 19:21 ` Eli Zaretskii
2020-04-19 21:02 ` Paul Eggert
2020-04-19 21:11 ` Drew Adams
2020-04-19 21:57 ` Michael Heerdegen
2020-04-19 22:41 ` Paul Eggert
2020-04-19 23:45 ` Michael Heerdegen
2020-04-20 0:24 ` Paul Eggert
2020-04-20 0:53 ` Michael Heerdegen
2020-04-20 3:23 ` Paul Eggert
2020-04-20 3:36 ` Michael Heerdegen
2020-04-22 6:30 ` Paul Eggert
2020-04-20 5:54 ` Drew Adams
2020-04-22 17:21 ` Paul Eggert
2020-04-23 0:49 ` Michael Heerdegen
2020-04-24 2:36 ` Richard Stallman
2020-04-24 15:08 ` Drew Adams
2020-04-25 1:58 ` Paul Eggert
2020-04-24 16:39 ` Mattias Engdegård
2020-04-24 16:46 ` Dmitry Gutov
2020-04-25 2:21 ` Paul Eggert
2020-04-25 2:40 ` Dmitry Gutov
2020-04-25 3:20 ` Paul Eggert
2020-04-25 19:30 ` Dmitry Gutov
2020-04-26 3:49 ` Paul Eggert
2020-04-26 14:03 ` Dmitry Gutov
2020-04-26 14:19 ` Eli Zaretskii
2020-04-26 14:34 ` Dmitry Gutov
2020-04-26 15:46 ` Eli Zaretskii
2020-04-26 16:02 ` Dmitry Gutov
2020-04-26 16:58 ` Eli Zaretskii
2020-04-26 17:39 ` Dmitry Gutov
2020-04-26 18:14 ` Eli Zaretskii
2020-04-26 18:32 ` Dmitry Gutov
2020-04-26 18:41 ` Eli Zaretskii
2020-04-26 18:53 ` Dmitry Gutov
2020-04-26 18:57 ` Paul Eggert
2020-04-26 19:22 ` Philipp Stephani
2020-04-26 20:14 ` Paul Eggert
2020-04-26 21:23 ` Dmitry Gutov
2020-04-26 23:13 ` Paul Eggert
2020-04-27 0:53 ` Dmitry Gutov
2020-04-27 1:49 ` Paul Eggert
2020-04-28 3:05 ` Dmitry Gutov
2020-04-28 8:17 ` Paul Eggert
2020-04-28 13:54 ` Dmitry Gutov
2020-04-28 17:59 ` Paul Eggert
2020-04-28 18:46 ` Dmitry Gutov
2020-04-28 19:20 ` Paul Eggert
2020-04-28 19:33 ` Dmitry Gutov
2020-04-28 20:09 ` Paul Eggert
2020-04-28 21:10 ` Dmitry Gutov
2020-04-28 23:10 ` Paul Eggert
2020-04-28 23:36 ` Dmitry Gutov
2020-04-28 23:53 ` Paul Eggert
2020-04-28 23:57 ` Dmitry Gutov
2020-04-28 23:53 ` Dmitry Gutov
2020-04-29 0:04 ` Paul Eggert
2020-04-29 0:14 ` Dmitry Gutov
2020-04-29 0:55 ` Drew Adams
2020-04-29 1:03 ` Dmitry Gutov
2020-04-29 1:15 ` Drew Adams
2020-04-29 1:27 ` Michael Heerdegen
2020-04-29 1:38 ` Paul Eggert
2020-04-29 4:36 ` Drew Adams
2020-04-29 16:18 ` Paul Eggert
2020-05-01 2:47 ` Richard Stallman
2020-05-01 6:23 ` Eli Zaretskii
2020-05-01 3:13 ` Dmitry Gutov
2020-05-01 5:15 ` Drew Adams
2020-05-01 21:40 ` Paul Eggert
2020-05-01 22:05 ` Drew Adams
2020-05-01 22:28 ` Paul Eggert
2020-05-02 1:07 ` Dmitry Gutov
2020-05-02 6:28 ` Paul Eggert
2020-05-02 15:42 ` Dmitry Gutov
2020-05-02 19:35 ` Paul Eggert
2020-05-03 1:30 ` Dmitry Gutov
2020-05-03 7:40 ` Paul Eggert
2020-05-03 16:44 ` Dmitry Gutov
2020-05-03 20:48 ` Paul Eggert
2020-05-03 22:17 ` Dmitry Gutov
2020-05-03 22:18 ` Dmitry Gutov
2020-05-03 22:39 ` Paul Eggert
2020-05-03 22:53 ` Dmitry Gutov
2020-05-03 23:10 ` Paul Eggert
2020-05-04 10:16 ` Dmitry Gutov
2020-05-04 17:52 ` Paul Eggert
2020-05-05 1:39 ` Dmitry Gutov
2020-05-05 6:09 ` Paul Eggert
2020-05-05 12:38 ` Dmitry Gutov
2020-05-09 6:10 ` Paul Eggert
2020-05-10 3:13 ` Dmitry Gutov
2020-05-10 13:34 ` Dmitry Gutov
2020-05-10 17:29 ` Paul Eggert
2020-05-11 0:00 ` Michael Heerdegen [this message]
2020-05-11 0:26 ` Dmitry Gutov
2020-05-11 1:47 ` Drew Adams
2020-05-11 1:54 ` Dmitry Gutov
2020-05-11 2:33 ` Drew Adams
2020-05-11 2:56 ` Michael Heerdegen
2020-05-11 4:21 ` Drew Adams
2020-05-11 4:51 ` Michael Heerdegen
2020-05-11 6:28 ` Paul Eggert
2020-05-11 13:57 ` Noam Postavsky
2020-05-11 22:36 ` Michael Heerdegen
2020-05-11 22:30 ` Michael Heerdegen
2020-05-12 3:20 ` Richard Stallman
2020-05-12 4:24 ` Michael Heerdegen
2020-05-13 3:57 ` Richard Stallman
2020-05-13 5:05 ` Michael Heerdegen
2020-05-14 5:14 ` Richard Stallman
[not found] ` <05BEF593-F16A-4DEE-98BC-653221F1F9EE@acm.org>
2020-05-17 0:11 ` Paul Eggert
2020-05-17 9:43 ` Mattias Engdegård
2020-05-17 16:38 ` Paul Eggert
2020-05-11 1:53 ` Paul Eggert
2020-05-11 3:18 ` Michael Heerdegen
2020-05-11 0:44 ` Dmitry Gutov
2020-05-11 1:57 ` Paul Eggert
2020-05-12 1:59 ` Dmitry Gutov
2020-05-17 1:28 ` Paul Eggert
2020-05-17 5:02 ` Michael Heerdegen
2020-05-17 16:34 ` Paul Eggert
2020-05-17 12:39 ` Dmitry Gutov
2020-05-17 16:21 ` Paul Eggert
2020-05-05 17:40 ` Drew Adams
2020-05-05 18:49 ` Dmitry Gutov
2020-05-05 19:26 ` Drew Adams
2020-05-05 20:48 ` Kevin Vigouroux via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-05-09 5:57 ` Paul Eggert
2020-04-28 21:18 ` Dmitry Gutov
2020-04-28 17:25 ` Drew Adams
2020-04-28 17:47 ` Paul Eggert
2020-04-29 0:32 ` Michael Heerdegen
2020-04-29 1:40 ` Paul Eggert
2020-04-29 4:40 ` Michael Heerdegen
2020-04-29 8:01 ` Eli Zaretskii
2020-04-29 16:36 ` Paul Eggert
2020-04-24 17:18 ` Drew Adams
2020-04-25 3:38 ` Richard Stallman
2020-04-25 18:26 ` Paul Eggert
2020-04-25 2:22 ` Paul Eggert
2020-04-25 6:00 ` Andreas Schwab
2020-04-25 18:23 ` Paul Eggert
2020-04-28 23:52 ` Michael Heerdegen
2020-04-21 1:25 ` Michael Heerdegen
2020-04-21 2:20 ` Paul Eggert
2020-04-20 6:02 ` Drew Adams
2020-04-19 20:45 ` Paul Eggert
2020-04-20 14:10 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mu6ftk6o.fsf@web.de \
--to=michael_heerdegen@web.de \
--cc=40671@debbugs.gnu.org \
--cc=dgutov@yandex.ru \
--cc=eggert@cs.ucla.edu \
--cc=ke.vigouroux@laposte.net \
--cc=mattiase@acm.org \
--cc=rms@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).