From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Pascal J. Bourguignon" Newsgroups: gmane.emacs.help Subject: Re: mutate list by appending a list (and similar for props) Date: Thu, 18 Sep 2014 18:53:49 +0200 Organization: Informatimago Message-ID: <874mw4zx7m.fsf@kuiper.lan.informatimago.com> References: <3710b1bf-1e23-4147-b6ea-40c360fb16b4@googlegroups.com> <82917bd2-a3dc-4521-b1d3-45680b0a4402@googlegroups.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1411059625 26584 80.91.229.3 (18 Sep 2014 17:00:25 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 18 Sep 2014 17:00:25 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Thu Sep 18 19:00:19 2014 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XUf47-0000hu-4g for geh-help-gnu-emacs@m.gmane.org; Thu, 18 Sep 2014 19:00:19 +0200 Original-Received: from localhost ([::1]:52282 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUf46-0005pW-QO for geh-help-gnu-emacs@m.gmane.org; Thu, 18 Sep 2014 13:00:18 -0400 Original-Path: usenet.stanford.edu!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 44 Original-X-Trace: individual.net irxOkw3OR0oBFJLct+pwYwmfkJ5XOauejOhwtZbx0XFxquL2CO Cancel-Lock: sha1:YTZmNzUzNzcwNDkzYjkzMzVhMDBhZjg2MmJjZmZiYmEzZmQwNTNlNA== sha1:xGgukUCoQjZ9Zn+TCo1wOjHwzpE= Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9 033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR mV+hO/VvFAAAAABJRU5ErkJggg== X-Accept-Language: fr, es, en User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Original-Xref: usenet.stanford.edu gnu.emacs.help:207732 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:100005 Archived-At: Michael Heerdegen writes: > Sam Halliday writes: > >> > (setq list (append additional-list list)) >> >> Thanks! But that's not ideal because it involves repeating the list >> symbol (which can often be quite long). > > Try (cl-callf2 append additional-list list) instead, which expands > exactly into the above expression. No! You want prependf: (require 'cl) ; of course! (define-modify-macro appendf (&rest args) append "Append onto list") (let ((list '(1 2 3))) (appendf list '(4 5 6) '(7 8 9)) list) --> (1 2 3 4 5 6 7 8 9) (defun prepend (dest-list &rest other-lists) (apply (function append) (append other-lists (list dest-list)))) (define-modify-macro prependf (&rest args) prepend "Prepend to list") (let ((list '(1 2 3))) (prependf list '(4 5 6) '(7 8 9)) list) --> (4 5 6 7 8 9 1 2 3) -- __Pascal Bourguignon__ http://www.informatimago.com/ “The factory of the future will have only two employees, a man and a dog. The man will be there to feed the dog. The dog will be there to keep the man from touching the equipment.” -- Carl Bass CEO Autodesk