我最近正在学习方案并且对没有标识符就无法评估宏的设计感到好奇,而 lambda(procedure) 可以这样做。
例如,我可以像这样使用匿名 lambda:
((lambda x x) 1 2 3)
似乎我必须使用以下语法定义一个宏:
(define-macro my-macro (lambda x x))
我很好奇为什么会有这样的方法直接像这样创建一个宏:
(define my-macro (macro-lambda x x))
我想如果将宏和 lambda 视为不同的类型,第二个可能会更优雅。
我的问题是:
- 做
define-macro
什么? - 宏和 lambda 之间的根本区别是什么?
- 方案中是否有匿名宏,如果没有,为什么?