|
From: | Juanma Barranquero |
Subject: | Re: A macro and an unwanted containing list in the resulting form |
Date: | Wed, 23 May 2007 13:39:54 +0200 |
On 5/23/07, Sebastian Tennant <sebyte@smolny.plus.com> wrote:
(cond (((equal e "hello") (message "hi")) ^((equal e "goodbye") (message "bye")))) | ^ | | +--------- unwanted list -------------+ Clearly my approach is wrong (because this is how mapcar behaves), so what is the best way to go about this?
Try with (defmacro build-cond (alist) (append '(cond) (mapcar '(lambda (each) (cons (list 'equal 'my-var (car each)) (list (cdr each)))) alist))) 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")) Juanma
[Prev in Thread] | Current Thread | [Next in Thread] |