help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: defining many similar functions using macros


From: Klaus Berndl
Subject: Re: defining many similar functions using macros
Date: 03 Oct 2004 07:31:20 +0200
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3

On Sat, 02 Oct 2004, Joe Corneli wrote:


[...]

>  This macro works on single elements:
>  
>  (defmacro define-tex-symbol (name)
>    `(defun ,(intern (concat "tex-" name)) ()
>       (interactive)
>       (insert "\\" ,name)))
>  
>  E.g. (define-tex-symbol "alpha") ;=> tex-alpha
>  
>  But 
>  
>  (dolist (elt '("alpha"
>                 "beta"))
>    (define-tex-symbol elt))
>  
>  triggers an error:
>  
>  Debugger entered--Lisp error: (wrong-type-argument sequencep elt)
>    concat("tex-" elt) (intern (concat "tex-" name)) (list (quote defun)
>    (intern (concat "tex-" name)) nil (quote (interactive)) (list (quote
>    insert) "\\" name))
>  ...
>  
>  There seem to be some subtleties associated with macro expansion
>  that I'm missing here.  Help would be appreciated.

Try:

(dolist (elt '("alpha"
               "beta"))
  (eval `(define-tex-symbol ,elt)))

Do not know if there are other and better solutions but this works!

Ciao,
Klaus

-- 
Klaus Berndl                    mailto: klaus.berndl@sdm.de
sd&m AG                         http://www.sdm.de
software design & management    
Carl-Wery-Str. 42, 81739 Muenchen, Germany
Tel +49 89 63812-392, Fax -220


reply via email to

[Prev in Thread] Current Thread [Next in Thread]