(defmacro m1 () (1+ 1))
(m1)
|
2
(macroexpand'(m1))
|
2
(defmacro m2 () '(1+ 1))
(m2)
|
2
(macroexpand'(m2))
|
(1+ 1)
'hoge = (quote hoge)
|
hoge
(defmacro m3 () ''(1+ 1))
(m3)
|
(1+ 1)
(macroexpand'(m3))
|
'(1+ 1)
(defmacro m4 () '''(1+ 1))
(m4)
|
'(1+ 1)
(macroexpand'(m4))
|
''(1+ 1)
(defun f1 ()
(list '1+ 1))
(f1)
|
(1+ 1)
(defmacro m5 ()
`(list ,(m1) ,(m2) ,(m3) ,(m4) ,(f1)))
(m5)
|
(2 2 2 (1+ 1) 2)
(macroexpand'(m5))
|
(list 2 2 (1+ 1) '(1+ 1) (1+ 1))
'hoge = `hoge
|
hoge
``hoge
|
'hoge
`(,(+ 1 2))
|
(3)
`(,@(+ 1 2))
|
3
`'(,@(+ 1 2))
|
'3
'`(,@(+ 1 2))
|
(+ 1 2)
``(,@(+ 1 2))
|
(+ 1 2)
`(,@'(+ 1 2))
|
(+ 1 2)
`(',@(+ 1 2))
|
((quote . 3))
``(,@,@'(+ 1 2))
|
(append + 1 2)
'`(,@'(,@ nil))
|
'nil
``(nil ,@ nil (nil ,@'(nil nil) ,@'(nil ,@ nil)) nil)
|
(cons 'nil (append nil (cons (cons 'nil (append '(nil nil) '(nil))) '(nil))))
`(,'@(+ 1 2))
|
(@ (+ 1 2))
(defmacro m6 ()
(macrolet ((m () ``(list (m1) (m2) ,(m3) ,,(m4) ,(f1))))
(m)))
(m6)
|
(2 2 2 2 2)
(macroexpand'(m6))
|
(list (m1) (m2) (1+ 1) (1+ 1) (1+ 1))