From: Drew Adams <drew.adams@oracle.com>
To: "João Távora" <joaotavora@gmail.com>
Cc: 33998@debbugs.gnu.org, Deus Max <deusmax@gmx.com>
Subject: bug#33998: 27.0.50; cl-delete does not delete the first list element
Date: Tue, 8 Jan 2019 10:22:42 -0800 (PST) [thread overview]
Message-ID: <debd169a-d316-4729-b5e5-1dca185b8c2e@default> (raw)
In-Reply-To: <CALDnm53MxMixrviLvDA0XpFLZwV6bFuoZeSWA76MZHH=JQ5bCQ@mail.gmail.com>
> > > > > So, cumbersome as it is, you should always use:
> > > > ^^^^^^^^^^^^^
> > > > > (setq seq (cl-delete thing seq))
> > > >
> > > > FWIW, this is not really true.
> > > >
> > > > `cl-delete' deletes THING from the
> > > > _value_ of SEQ. You might or you
> > > > might not want variable SEQ to have
> > > > the updated value.
> > >
> > > But this is what he wanted, so what's
> > > the point in making this more confusing
> > > than it needs to be?
> >
> > It's enough to suggest that he might want
> > to do that, and point to the manual for
> > explanation. It's the "always" that's
> > misleading.
>
> Actually, as I've subsequently demonstrated
> the leeway given to cl-delete by the CL spec
> is such that it is quite a good idea to *always*
> use the (setq SEQ (cl-delete THING SEQ)) idiom,
> because you have no control on what cl-delete
> does with SEQ. You might indeed not want it
> changed but it may change, and not in ways
> you can predict.
No. This has nothing to do with CL or the
CL spec or the implementation of `cl-delete'.
Again, you should set the variable to the value
returned by `cl-delete' only if that's what you
want - only if you want the variable to point
to the result of the operation instead of what
it pointed to previously.
This is so, regardless of what the result of
that operation might be - regardless of how
`cl-delete' is implemented or even what it
might do.
It's about the difference between a variable
and its value. `cl-delete' can only act on
the value, not on the variable (it never sees
the variable). Only other code can decide
whether the variable should be set to the
return value of `cl-delete'. If yes, then
`setq'; if no, then no `set'`.
Pretty simple, really.
next prev parent reply other threads:[~2019-01-08 18:22 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-06 13:30 bug#33998: 27.0.50; cl-delete does not delete the first list element Deus Max
2019-01-07 17:13 ` João Távora
2019-01-07 17:28 ` Drew Adams
2019-01-07 18:04 ` João Távora
2019-01-07 18:14 ` Drew Adams
2019-01-08 13:45 ` João Távora
2019-01-08 18:22 ` Drew Adams [this message]
2019-01-08 18:31 ` João Távora
2019-01-08 18:45 ` Drew Adams
2019-01-08 18:57 ` João Távora
2019-01-08 19:07 ` Drew Adams
2019-01-08 21:38 ` João Távora
2019-01-09 1:30 ` Drew Adams
2019-01-07 20:20 ` Deus Max
2019-01-07 20:27 ` Dmitry Gutov
2019-01-07 20:48 ` Deus Max
2019-01-07 21:06 ` João Távora
2019-01-07 22:46 ` Deus Max
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=debd169a-d316-4729-b5e5-1dca185b8c2e@default \
--to=drew.adams@oracle.com \
--cc=33998@debbugs.gnu.org \
--cc=deusmax@gmx.com \
--cc=joaotavora@gmail.com \
/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).