Sal*_*Egg 5 macros common-lisp
我想定义一个可以对s表达式进行注释的宏,例如:
我希望
(list 1 2 (comment-macro (something))) -> (1 2)
Run Code Online (Sandbox Code Playgroud)
但是,如果我像这样定义宏
(defmacro comment-macro (x))
Run Code Online (Sandbox Code Playgroud)
实际上,上述形式的结果
(1 2 nil)
Run Code Online (Sandbox Code Playgroud)
使用常规宏无法实现所需的功能,因为nil将始终使用其主值(或者如果未返回任何值).
但是,有两种常见的选择:
评论:#| ... |#- 一般文字
功能表达式:#+(or) ...或#-(and) ...- 用于(临时?)禁用代码
您还可以使用和定义自己的读取宏.set-macro-characterset-dispatch-macro-character