From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Pascal Bourguignon Newsgroups: gmane.emacs.help Subject: Re: A macro and an unwanted containing list in the resulting form Date: Wed, 23 May 2007 18:57:40 +0200 Organization: Informatimago Message-ID: <87abvvv5ob.fsf@thalassa.lan.informatimago.com> References: <873b1nye2g.fsf@moley.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1179942042 21321 80.91.229.12 (23 May 2007 17:40:42 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 23 May 2007 17:40:42 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed May 23 19:40:33 2007 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 1Hqup7-0002JW-6a for geh-help-gnu-emacs@m.gmane.org; Wed, 23 May 2007 19:40:33 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Hqup9-0002UB-70 for geh-help-gnu-emacs@m.gmane.org; Wed, 23 May 2007 13:40:35 -0400 Original-Path: shelby.stanford.edu!headwall.stanford.edu!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.freenet.de!newsfeed.r-kom.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 40 Original-X-Trace: individual.net arJ5pgSclP3nKxjhpUvuXA7ZBLBz+Fv9bnIKBsYNuIQ53DnObc 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.0.99 (gnu/linux) Cancel-Lock: sha1:M2NmNWVmMWUyZjZlZGUzZjUzZmI0NDFkMzhmODEzOWRlMjkyMGVlZQ== Original-Xref: shelby.stanford.edu gnu.emacs.help:148744 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:44339 Archived-At: Sebastian Tennant writes: >> Is there any reason to make the argument of build-cond an alist? You >>could try >> >> (defmacro build-cond (&rest conds) >> (append '(cond) >> (mapcar '(lambda (each) >> (cons (list 'equal 'my-var (car each)) (list (cdr each)))) >> conds))) >> >> and then use >> >> (build-cond ("hello" . (message "hi")) >> ("goodbye" . (message "bye")) > > The reason for the alist is the clauses are being passed as one of a > number of arguments to a function call. If you get the a-list as argument to a function, then you don't need a macro to process it! Just write a loop! (require 'cl) (defun my-function (string clauses) (loop for clause in clauses until (string= string (car clause)) finally (eval (cdr clause)))) (my-function "goodbye" '(("hello" . (message "hi")) ("goodbye" . (message "bye")))) -- __Pascal Bourguignon__ http://www.informatimago.com/ NOTE: The most fundamental particles in this product are held together by a "gluing" force about which little is currently known and whose adhesive power can therefore not be permanently guaranteed.