GNU bug report logs -
#27584
26.0.50; alist-get: Add optional arg TESTFN
Previous Next
Reported by: Tino Calancha <tino.calancha <at> gmail.com>
Date: Wed, 5 Jul 2017 03:24:02 UTC
Severity: wishlist
Found in version 26.0.50
Done: Tino Calancha <tino.calancha <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
> From: Tino Calancha <tino.calancha <at> gmail.com>
> Date: Sat, 8 Jul 2017 16:02:12 +0900 (JST)
> cc: Nicolas Petton <nicolas <at> petton.fr>, monnier <at> iro.umontreal.ca,
> 27584 <at> debbugs.gnu.org, Tino Calancha <tino.calancha <at> gmail.com>
>
> > Bonus points for simplifying the code by determining TESTFN up front,
> > then having only one of the above two clauses.
> Do you mean something like this?
>
> {
> Lisp_Object tail = list;
> Lisp_Object fn = NILP (testfn) ? Qequal : testfn;
> FOR_EACH_TAIL (tail)
> {
> Lisp_Object car = XCAR (tail);
> if (CONSP (car) && !NILP (call2 (fn, (XCAR (car)), key)))
> return car;
> }
>
> CHECK_LIST_END (tail, list);
> return Qnil;
> }
That's one way, yes. But not necessarily the one I had in mind.
> ;; This is shorter but now the default case, because the call2, is less
> ;; efficient than just using Fequal, right?
Is it? Did you time it?
This bug report was last modified 7 years and 352 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.