(defmacro m7 (n)
(+ n 1))
(m7 -15)
|
-14
(macroexpand'(m7 -15))
|
-14
(defmacro ms1 (macro)
`(macroexpand'(,macro -15)))
(macroexpand'(ms1 m7))
|
(macroexpand '(m7 -15))
(defmacro m8 (n)
(if (plusp n) `(m7 ,n)
`(m7 ,(- n))))
(m8 -15)
|
16
(ms1 m8)
|
16
(defmacro m9 (n)
`(sqrt (m8 ,n)))
(m9 15)
|
4.0
(ms1 m9)
|
(sqrt (m8 -15))
(defmacro m10 (n)
`(m9 ,n))
(ms1 m10)
|
(sqrt (m8 -15))
(defmacro m11 (n)
(macrolet ((k () `(m10 ,n)))
(k)))
(m11 -15)
|
4.0
(ms1 m11)
|
4.0
(defmacro mx (body)
(macrolet ((k () body))
(k)))
(macroexpand'(mx (m9 15)))
|
4.0