unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Nicolas Petton <nicolas@petton.fr>, David Kastrup <dak@gnu.org>,
	Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Mark Oteiza <mvoteiza@udel.edu>, emacs-devel@gnu.org
Subject: RE: seq-some-p and nil
Date: Tue, 8 Sep 2015 12:48:23 -0700 (PDT)	[thread overview]
Message-ID: <b896ec46-01df-46f0-a648-8b68ff138bd8@default> (raw)
In-Reply-To: <87r3m8lop9.fsf@petton.fr>

> > Was there something wrong with the suggestion to return,
> > as the non-nil value, a cons (ELEMENT . VALUE)?
> >
> > (Where ELEMENT is the sequence element that satisfies the
> > predicate, and VALUE is the return value of the predicate
> > for that element.)
> >
> > That gives you "some" element that satisfies the predicate
> > (the first such).  And it gives you the result of the test.
> > Each of these can be useful, depending on the context.
> 
> It would work, and I believe Scheme has a similar function, but I don't
> want seq-some to have this extra complexity.  It could be another
> function though, just like in Scheme.

What extra complexity?  It creates one cons cell which has as its
car and cdr things that presumably already exist.

I realize you are dealing with general sequences, and that the
sequence code can be complex, but the cons part of it, as the return
value, should be simple, no?  Isn't it true for all sequence types
supported, that the car and cdr will exist after the predicate is
called, and so they can just be pointed to by the cons?

For lists only, this is what I use, FWIW:

(defun zz-some (predicate list)
  "Return non-nil if PREDICATE applied to some element of LIST is true.
The value returned is a cons, (ELEMENT . VALUE), where ELEMENT is the
first list element that satisfies PREDICATE and VALUE is the value of
PREDICATE applied to ELEMENT."
  (let (elt val)
    (catch 'zz-some
      (while list
        (when (setq val  (funcall predicate (setq elt  (pop list))))
          (throw 'zz-some (cons elt val))))
      nil)))



  reply	other threads:[~2015-09-08 19:48 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-03 15:50 seq-some-p and nil Simen Heggestøyl
2015-09-03 16:42 ` Stefan Monnier
2015-09-03 17:19   ` Artur Malabarba
2015-09-03 17:35     ` John Mastro
2015-09-03 17:50       ` Drew Adams
2015-09-03 19:36         ` Nicolas Petton
2015-09-03 19:45       ` Nicolas Petton
2015-09-06  1:17         ` Mark Oteiza
2015-09-06 20:48           ` Nicolas Petton
2015-09-06 21:46           ` Stefan Monnier
2015-09-07  6:11             ` Nicolas Petton
2015-09-07  8:06               ` Drew Adams
2015-09-07 15:19                 ` Stefan Monnier
2015-09-07 15:23                   ` Mark Oteiza
2015-09-07 17:08                   ` Drew Adams
2015-09-07 20:44                   ` Nicolas Petton
2015-09-07 22:27                     ` Stefan Monnier
2015-09-08  7:09                       ` Nicolas Petton
2015-09-08 12:36                         ` Stefan Monnier
2015-09-08 13:07                           ` Nicolas Petton
2015-09-08 16:49                             ` Stefan Monnier
2015-09-08 17:01                               ` David Kastrup
2015-09-08 17:08                                 ` Drew Adams
2015-09-08 19:02                                   ` Nicolas Petton
2015-09-08 19:48                                     ` Drew Adams [this message]
2015-09-09  7:56                                       ` Nicolas Petton
2015-09-09 13:26                                         ` Drew Adams
2015-09-09 17:45                                           ` Stefan Monnier
2015-09-09 17:53                                             ` Drew Adams
2015-09-09 20:24                                               ` Stefan Monnier
2015-09-09 20:46                                                 ` Drew Adams
2015-09-09 21:44                                           ` Nicolas Petton
2015-09-08 18:43                                 ` Stefan Monnier
2015-09-08 19:03                                   ` David Kastrup
2015-09-08 18:59                               ` Nicolas Petton
2015-09-08 19:06                                 ` David Kastrup
2015-09-08 20:33                                 ` Stefan Monnier
2015-09-09  7:57                                   ` Nicolas Petton
2015-09-08 13:21                           ` Nicolas Petton
2015-09-08 13:37                             ` Mark Oteiza
2015-09-08 17:50                               ` Stefan Monnier
2015-09-09  2:19                                 ` Mark Oteiza
2015-09-09  4:28                                   ` Stephen J. Turnbull
2015-09-09  4:57                                     ` Mark Oteiza
2015-09-07 20:45                   ` Nicolas Petton
2015-09-03 19:40 ` Nicolas Petton
2015-09-10 17:46   ` Simen Heggestøyl
2015-09-10 22:12     ` Nicolas Petton
2015-09-22 17:17       ` Simen Heggestøyl
2015-09-23  8:38         ` Nicolas Petton
2015-09-23  8:44           ` David Kastrup
2015-09-23  8:48           ` Simen Heggestøyl
2015-09-23 10:57             ` Nicolas Petton
2015-09-28 19:17         ` 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

  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=b896ec46-01df-46f0-a648-8b68ff138bd8@default \
    --to=drew.adams@oracle.com \
    --cc=dak@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=mvoteiza@udel.edu \
    --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 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).