From: Drew Adams <drew.adams@oracle.com>
To: Lars Ingebrigtsen <larsi@gnus.org>
Cc: 45539@debbugs.gnu.org
Subject: bug#45539: 26.3; `add-to-ordered-list': Add optional arg for :test predicate for hash table
Date: Wed, 30 Dec 2020 09:55:55 -0800 (PST) [thread overview]
Message-ID: <c2aa0ab5-ac89-4a52-b12a-339e9c6ca558@default> (raw)
In-Reply-To: <c7d3a98c-f5dc-4b32-93b8-5fdb3da1313f@default>
Let me know if you want a separate bug for the following.
The doc for this function does not, I think, convey what it's really about. And part of the reason for that, I guess, is that it hasn't (until now) allowed for list-element comparisons other than `eq'.
What this function is really about, I think, is this: a list with unique elements - no duplicates.
With your fix of this bug, "unique" will be defined by the new TEST arg (predicate). Until then, "unique" is defined by `eq'.
This is important, as it means that this function is not only for adding an element at a given list position. It's about having a list of unique elements, and being able to not only add (or remove) but also _change the position_ of an existing element.
That's not obvious from the current doc, but it seems to be the raison d'etre for this.
You have a list of 314,159 elements, and you want to change the value of the 2,067th element? Use this function to do that.
Think of your Netflix DVD queue. You can add or remove elements, of course. But more importantly, you can move the DVD that's currently at position 147 to position 3.
It's vital to understanding this function that users know that the list has no duplicates. Otherwise, the repositioning makes no sense. And "no duplicates" depends on the meaning of "unique", i.e., the TEST-predicate optional arg or `eq' by default.
next prev parent reply other threads:[~2020-12-30 17:55 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-29 21:04 bug#45539: 26.3; `add-to-ordered-list': Add optional arg for :test predicate for hash table Drew Adams
2020-12-30 3:48 ` Lars Ingebrigtsen
2020-12-30 7:01 ` Drew Adams
2020-12-30 7:07 ` Lars Ingebrigtsen
2020-12-30 8:43 ` Drew Adams
2020-12-30 17:55 ` Drew Adams [this message]
2020-12-31 3:55 ` Lars Ingebrigtsen
2020-12-31 4:30 ` Lars Ingebrigtsen
2020-12-31 5:47 ` Drew Adams
2020-12-31 16:40 ` Drew Adams
2020-12-31 5:34 ` Drew Adams
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=c2aa0ab5-ac89-4a52-b12a-339e9c6ca558@default \
--to=drew.adams@oracle.com \
--cc=45539@debbugs.gnu.org \
--cc=larsi@gnus.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).