Met*_*ymy 6 lisp macros clisp common-lisp
我想了解更多关于lisp宏的知识,我想创建一个简单的defun宏实现.我也对所有实现中的lisp源代码感兴趣.
这是一个棘手的问题,因为引导:defun做很多事情(哇,调用很多函数),但是要定义那些需要工作的函数defun.因此,defun在clisp/src/init.lisp中有三个(3!)定义:在行
defun的基本定义可能是这样的:
(defmacro defun (fname lambda-list &rest body)
`(setf (fdefinition ',fname)
(lambda ,lambda-list
(block ,fname ,@body))))
Run Code Online (Sandbox Code Playgroud)
事实上,这是第一个定义defun在CLISP(线228),但没有defmacro,没有反引号在那一刻还没有,所以实际的代码看起来很丑陋.
另请参阅defun或setf首选用于在常见的lisp中创建函数定义以及为什么?在那里我讨论defuns的宏扩展.
| 归档时间: |
|
| 查看次数: |
1730 次 |
| 最近记录: |