From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: pjb@informatimago.com (Pascal J. Bourguignon) Newsgroups: gmane.emacs.help Subject: Re: Partition for Emacs Lisp Date: Sun, 28 Jun 2009 19:52:30 +0200 Organization: Informatimago Message-ID: <87prcouty9.fsf@galatea.local> References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1246215955 32143 80.91.229.12 (28 Jun 2009 19:05:55 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 28 Jun 2009 19:05:55 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sun Jun 28 21:05:49 2009 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MKzhD-0004qy-Mw for geh-help-gnu-emacs@m.gmane.org; Sun, 28 Jun 2009 21:05:48 +0200 Original-Received: from localhost ([127.0.0.1]:43589 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MKzhD-0000M1-61 for geh-help-gnu-emacs@m.gmane.org; Sun, 28 Jun 2009 15:05:47 -0400 Original-Path: news.stanford.edu!headwall.stanford.edu!news.glorb.com!news2.glorb.com!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!feeder.news-service.com!de-l.enfer-du-nord.net!usenet-fr.net!proxad.net!feeder1-2.proxad.net!cleanfeed1-b.proxad.net!nnrp7-2.free.fr!not-for-mail Original-Newsgroups: gnu.emacs.help Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9 033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR mV+hO/VvFAAAAABJRU5ErkJggg== X-Accept-Language: fr, es, en X-Disabled: X-No-Archive: no User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.3 (darwin) Cancel-Lock: sha1:MWNiZDBkMmU1ZTA3ZTAwNDBiMjYyMzhkM2UzNGRkMDE3ZmQ5MTYxYw== Original-Lines: 44 Original-NNTP-Posting-Date: 28 Jun 2009 19:52:31 MEST Original-NNTP-Posting-Host: 88.182.134.169 Original-X-Trace: 1246211551 news-4.free.fr 7785 88.182.134.169:54711 Original-X-Complaints-To: abuse@proxad.net Original-Xref: news.stanford.edu gnu.emacs.help:170397 X-Mailman-Approved-At: Sun, 28 Jun 2009 15:05:17 -0400 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:65613 Archived-At: Marc Tfardy writes: > Hi! > > I looking for a ELISP function that do the job like Partition in > Mathematica. The simplest case: > > (partition '(a b c d e f) 2) > should return: > ((a b) (c d) (e f)) (defun partition-list (list length) (loop while list collect (subseq list 0 length) do (setf list (nthcdr length list)))) (defun partition-vector (vector length) (loop for i = 0 then (+ i length) while (< i (length vector)) collect (subseq vector i (+ i length)))) (defun partition (sequence length) (etypecase sequence (list (partition-list sequence length)) (string (partition-vector sequence length)) ; emacs lisp strings are not vectors! (vector (partition-vector sequence length)))) (partition '[a b c d e f] 2) -> ([a b] [c d] [e f]) (partition '(a b c d e f) 2) -> ((a b) (c d) (e f)) (partition '"abcdef" 2) -> ("ab" "cd" "ef") > Is there something ready out from the box? Perhaps. But if you didn't search in the manual, it must be because it would take more time than to write partition yourself, so I didn't search in the manual either, and wrote it to steal you the fun of writing it yourself. -- __Pascal Bourguignon__