all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Basil L. Contovounesios" <contovob@tcd.ie>
To: Nicolas Petton <nicolas@petton.fr>
Cc: Michael Heerdegen <michael_heerdegen@web.de>,
	"Miguel V. S. Frasson" <mvsfrasson@gmail.com>,
	34852@debbugs.gnu.org, Stefan Monnier <monnier@iro.umontreal.ca>
Subject: bug#34852: 26.1; seq-intersection ignores nil as element
Date: Thu, 21 Mar 2019 17:46:51 +0000	[thread overview]
Message-ID: <87mulojf1w.fsf@tcd.ie> (raw)
In-Reply-To: <87r2b1nub1.fsf@petton.fr> (Nicolas Petton's message of "Wed, 20 Mar 2019 21:51:30 +0100")

Nicolas Petton <nicolas@petton.fr> writes:

> Here's a patch for master.

Thanks, I have only some minor comments:

> diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
> index 4a811d7895..39c93e25ed 100644
> --- a/lisp/emacs-lisp/seq.el
> +++ b/lisp/emacs-lisp/seq.el
> @@ -356,6 +356,7 @@ seq-sort-by
>      count))
>  
>  (cl-defgeneric seq-contains (sequence elt &optional testfn)
> +  (declare (obsolete "Use `seq-contains-p' instead." "27.1"))

According to make-obsolete, "use instead" strings should not start with
a capital letter, but even better is (obsolete seq-contains-p "27.1"),
which adds a link to seq-contains-p in the *Help* buffer.

> @@ -420,7 +430,7 @@ seq-sort-by
>    "Return a list of the elements that appear in SEQUENCE1 but not in SEQUENCE2.
>  Equality is defined by TESTFN if non-nil or by `equal' if nil."
>    (seq-reduce (lambda (acc elt)
> -                (if (not (seq-contains sequence2 elt testfn))
> +                (if (not (seq-contains-p sequence2 elt testfn))
>                      (cons elt acc)
>                    acc))

Is there any harm in inverting this conditional structure, so that it
reads positively?

> diff --git a/test/lisp/emacs-lisp/seq-tests.el b/test/lisp/emacs-lisp/seq-tests.el
> index d8f00cfea4..6522def423 100644
> --- a/test/lisp/emacs-lisp/seq-tests.el
> +++ b/test/lisp/emacs-lisp/seq-tests.el
> @@ -185,6 +185,14 @@ test-sequences-oddp
>    (with-test-sequences (seq '(3 4 5 6))
>      (should (= 5 (seq-contains seq 5)))))
>  
> +(ert-deftest test-seq-contains-p ()
> +  (with-test-sequences (seq '(3 4 5 6))
> +    (should (eq (seq-contains-p seq 3) t))
> +    (should-not (seq-contains-p seq 7)))
> +  (with-test-sequences (seq '())
> +    (should-not (seq-contains-p seq 3))
> +    (should-not (seq-contains-p seq nil))))
> +

I think there should also be an explicit nil membership check:

(should (seq-contains-p  [nil] nil))
(should (seq-contains-p '(nil) nil))

-- 
Basil





  parent reply	other threads:[~2019-03-21 17:46 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-14  2:16 bug#34852: 26.1; seq-intersection ignores nil as element Miguel V. S. Frasson
2019-03-14 12:07 ` Michael Heerdegen
2019-03-14 13:09   ` Nicolas Petton
2019-03-14 12:22 ` Basil L. Contovounesios
2019-03-14 12:52   ` Miguel V. S. Frasson
2019-03-14 16:16     ` Basil L. Contovounesios
2019-03-14 13:09   ` Michael Heerdegen
2019-03-14 13:34     ` Stefan Monnier
2019-03-14 16:19       ` Basil L. Contovounesios
2019-03-14 16:45         ` Michael Heerdegen
2019-03-14 17:14           ` Basil L. Contovounesios
2019-03-14 19:08       ` Miguel V. S. Frasson
2019-03-14 21:43         ` Stefan Monnier
2019-03-14 23:08           ` Miguel V. S. Frasson
2019-03-14 23:14             ` Stefan Monnier
2019-03-14 23:21               ` Miguel V. S. Frasson
2019-03-14 23:42               ` Michael Heerdegen
2019-03-15  2:40                 ` Stefan Monnier
2019-03-15 12:26                   ` Michael Heerdegen
2019-03-15 14:47                     ` Stefan Monnier
2019-03-14 23:45             ` Miguel V. S. Frasson
2019-03-14 23:15         ` Michael Heerdegen
2019-03-15 15:56           ` Basil L. Contovounesios
2019-03-15 16:08             ` Miguel V. S. Frasson
2019-03-16 20:33               ` Miguel V. S. Frasson
2019-03-16 20:49                 ` Basil L. Contovounesios
2019-03-16 21:32                   ` Miguel V. S. Frasson
2019-03-15 15:55         ` Basil L. Contovounesios
2019-03-14 16:17     ` Basil L. Contovounesios
2019-03-14 16:35       ` Michael Heerdegen
2019-03-14 17:02         ` Basil L. Contovounesios
2019-03-14 17:23           ` Basil L. Contovounesios
2019-03-14 16:45     ` Nicolas Petton
2019-03-14 17:08       ` Basil L. Contovounesios
2019-03-18 11:55         ` Nicolas Petton
2019-03-18 19:06           ` Michael Heerdegen
2019-03-18 20:14             ` Nicolas Petton
2019-03-20 20:51           ` Nicolas Petton
2019-03-20 22:33             ` Michael Heerdegen
2019-03-21  8:02               ` Nicolas Petton
2019-03-21 17:46             ` Basil L. Contovounesios [this message]
2019-03-21 20:01               ` Nicolas Petton
2019-03-21 20:16               ` Nicolas Petton

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=87mulojf1w.fsf@tcd.ie \
    --to=contovob@tcd.ie \
    --cc=34852@debbugs.gnu.org \
    --cc=michael_heerdegen@web.de \
    --cc=monnier@iro.umontreal.ca \
    --cc=mvsfrasson@gmail.com \
    --cc=nicolas@petton.fr \
    /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.