all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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.





  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

* 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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.