【发布时间】:2020-06-28 11:21:19
【问题描述】:
我认为 &body 和 &rest 应该表现相同,所以这让我感到困惑:
ELISP> (defmacro mrest (&rest rest))
mrest
ELISP> (mrest)
nil
ELISP> (mrest 1)
nil
ELISP> (mrest 1 2)
nil
ELISP> (mrest 1 2 3)
nil
ELISP> (mrest 1 2 3 4)
nil
ELISP> (defmacro mbody (&body body))
mbody
ELISP> (mbody)
*** Eval error *** Wrong number of arguments: (lambda (&body body) nil), 0
ELISP> (mbody 1)
*** Eval error *** Wrong number of arguments: (lambda (&body body) nil), 1
ELISP> (mbody 1 2)
nil
ELISP> (mbody 1 2 3)
*** Eval error *** Wrong number of arguments: (lambda (&body body) nil), 3
ELISP> (mbody 1 2 3 4)
*** Eval error *** Wrong number of arguments: (lambda (&body body) nil), 4
为什么 elisp 坚持 mbody 在这里正好有两个参数?
【问题讨论】:
标签: elisp elisp-macro