emacs-devel
[Top][All Lists]
Advanced

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

Re: Strange behavior of macro


From: Herbert Euler
Subject: Re: Strange behavior of macro
Date: Tue, 30 May 2006 18:31:47 +0800

From: Andreas Schwab <address@hidden>
To: "Herbert Euler" <address@hidden>
CC: address@hidden
Subject: Re: Strange behavior of macro
Date: Tue, 30 May 2006 12:23:49 +0200

"Herbert Euler" <address@hidden> writes:

> Is the following in Emacs a expected behavior of macro?
>
>    (defmacro m1 (v)
>      (let ((len (length (eval v))))
>        `(quote ,len)))
>         => m1
[...]
>    (m1 v)
>         => error: (wrong-type-argument sequencep v)

See (elisp)Eval During Expansion.

OK, so it's an accepted behavior.  Btw, in the test of GNU clisp,
it's safe to write such a macro:

[1]> (defmacro m1 (v)
      (let ((len (length (eval v))))
        `(quote ,len)))
M1
[2]> (m1 '(1 2 3))
3
[3]> (setq v1 '(1 2 3))
(1 2 3)
[4]> (m1 v1)
3
[5]> (setq v v1)
(1 2 3)
[6]> (m1 v)
3
[7]>

Regards,
Guanpeng Xu

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/





reply via email to

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