我已经使用CLISP一段时间了,我想说,我终于找到了"理解";宏。现在我有一个问题:除了宏之外,还有什么类似的东西可以描述函数吗?我想在我的宏中放一个docstring,这样有人就可以使用";描述esk";函数/宏。如果这还不够清楚,也许这个代码示例会为您澄清:
(defmacro while (test &body body)
"sexier while loop - usage: (while (< x 10) (princ x) (setf x (+ x 1)))"
(list 'loop 'while test 'do (cons 'progn body)))
(describe-macro 'while)
#=>sexier while loop - usage: (while (< x 10) (princ x) (setf x (+ x 1)))
#=>args: test, body
非常感谢。
使用documentation
函数:
(documentation 'while 'function)
function
类型用于表达式的函数位置中使用的任何名称,因此它用于函数、宏和特殊运算符。
(documentation <x> 'function)
将为您提供<x>
作为函数或宏的文档:
> (documentation 'collecting 'function)
"Collect things into a list forwards.
Within the body of this macro The form `(COLLECT THING)' will collect
THING into the list returned by COLLECTING. COLLECT is a local
function so can be passed as an argument, or returned. COLLECT
returns its argument. See WITH-COLLECTORS for which this COLLECTING is
now a shim"
describe
也可以告诉你有用的东西。通常,像SLIME这样的编程环境也会提供各种有用的帮助。我不太了解SLIME,但在LW中,当光标位于collecting
上时,Show Documentation
命令会弹出一个显示的窗口
Documentation for (defmacro collecting):
Arguments: (&body forms)
<docstring as above>