[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