[Top][All Lists]
[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/