宏
例如,Common Lisp 没有 while
循环,而是一个 loop
宏指令,用于在条件为真时进行迭代。为简洁期间,我们可以定义
(defmacro while (condition &body body)
`(loop while ,condition do (progn ,@body)))
并像这样使用它
(while (some-condition)
(do-something)
(do-something-else))
这会展开为
(loop while (some-condition) do
(progn
(do-something)
(do-something-else)))