From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: John Wiegley Newsgroups: gmane.emacs.devel Subject: Any interest in a function like this to add to subr.el? Date: Tue, 18 Oct 2016 10:53:10 -0700 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1476813226 32132 195.159.176.226 (18 Oct 2016 17:53:46 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 18 Oct 2016 17:53:46 +0000 (UTC) User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/25.1.50 (darwin) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Oct 18 19:53:38 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bwYZq-0005nt-3X for ged-emacs-devel@m.gmane.org; Tue, 18 Oct 2016 19:53:26 +0200 Original-Received: from localhost ([::1]:43115 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bwYZr-00053P-SW for ged-emacs-devel@m.gmane.org; Tue, 18 Oct 2016 13:53:27 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45171) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bwYZh-000538-G8 for emacs-devel@gnu.org; Tue, 18 Oct 2016 13:53:18 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bwYZe-0001gz-6k for emacs-devel@gnu.org; Tue, 18 Oct 2016 13:53:17 -0400 Original-Received: from mail-pf0-x22d.google.com ([2607:f8b0:400e:c00::22d]:36508) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1bwYZe-0001gl-0P for emacs-devel@gnu.org; Tue, 18 Oct 2016 13:53:14 -0400 Original-Received: by mail-pf0-x22d.google.com with SMTP id e6so477252pfk.3 for ; Tue, 18 Oct 2016 10:53:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:user-agent:mail-followup-to :mime-version; bh=9SbU6xPb11baDDXBSTO/jMCz7K+rf1cQ+dnh9F/VFB0=; b=jP75HeDtSs2h6O8qhI+sxWhHFEULhFL5i/DAjehbq2GPsaKmbNK7J2I8weXPwTRafV Rlt5+74rsE/TZENz1H+Ci555yQiPJchPf7RJgXXpy8swOsdzQ3thIHshdPeVRhSnFFCc dAtK4qf7KUCvfsZ+0RZf0niq5FRRc0+GxsNNJeTBVs6xmh+Me4JhMsDY57ABpfvppFej UADqYLUZP+pTFe8qX9ZlY/hN/DPawDCmvmRQMuf+MPbCpyHU6BhPfVJaX589QtNQYIWG RvWDQqH0wSmSg+aHj2xLGcWOyvRLnlJCrSkH2g+0ee4U9Az9Lr9j4udh4X8cMBGeJ+aW 7UQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:user-agent :mail-followup-to:mime-version; bh=9SbU6xPb11baDDXBSTO/jMCz7K+rf1cQ+dnh9F/VFB0=; b=mPL/TRvb6odWwFSml0e2Snz7PhAB+m/MCNP12uaNSB+YOFLflyy8w2vL3CH7L24al1 M6pPWhnGcHeG9mYtqElRF4X8OVYCVDoYvesMW7dxv/4ct0lOfti6YUY6pzZ8HMbQYgZM SEmwjYWsFqcHDrmt43yl8tJEhHv29MWY5EzJyU+k92X7BpN+4YlVg405z8uG2jNcMR0P k6A5fzzueDsEd5INp5hHWsGDcZSZH/8cx8PGa2oeo8NEJqRiUjEp1taQnOkWrVCzaxwM I+64ZEB+Guep0VPmGx4mdcLB+ueqjZMLGEl5QbKdXVPco0twGBrpJpyDN9cVdp3TNwTP gtNQ== X-Gm-Message-State: AA6/9Rl5BJGLrk1H8fKQUau0cGCAVjhOHblV7soqMeXD/SuI4dr+MpoxUEI8EivjfpPk0Q== X-Received: by 10.98.13.20 with SMTP id v20mr2852336pfi.80.1476813192616; Tue, 18 Oct 2016 10:53:12 -0700 (PDT) Original-Received: from Vulcan.local (76-234-69-149.lightspeed.frokca.sbcglobal.net. [76.234.69.149]) by smtp.gmail.com with ESMTPSA id d89sm35274917pfe.32.2016.10.18.10.53.11 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 18 Oct 2016 10:53:11 -0700 (PDT) X-Google-Original-From: "John Wiegley" Original-Received: by Vulcan.local (Postfix, from userid 501) id B78A63076C8C; Tue, 18 Oct 2016 10:53:11 -0700 (PDT) Mail-Followup-To: emacs-devel@gnu.org X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:208436 Archived-At: (defun sort-on (seq predicate accessor) "Sort SEQ use PREDICATE applied to values returned by ACCESSOR. This implements the so-called Schwartzian transform, which has the performance advantage of applying ACCESSOR at most once per element in the list, as opposed to using `sort' with a PREDICATE that applies the ACCESSOR. Note: this function is only a win over `sort' if ACCESSOR is compute-intensive; otherwise, it uses more intermediate cons cells than regular `sort', and so represents a memory for CPU tradeoff." (mapcar #'cdr (sort (mapcar #'(lambda (x) (cons (funcall accessor x) x)) seq) #'(lambda (x y) (funcall predicate (car x) (car y)))))) -- John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2