所以我有这个函数:
(define (try try-block catch-block finally-block)
; Implements try/catch/finally like in most other languages
)
为此,我想创建一个"助手"宏,避免重复说(lambda () ...)
,有点像set
和setq
:
(define-macro (tryq try-block catch-block finally-block)
(try
(lambda () (eval try-block))
(lambda () (eval catch-block))
(lambda () (eval finally-block))))
然而,由于lambda
延迟了它的参数,上面的程序不起作用——eval
中的try-block
在求值时是空的,因为它在lambda
中。
如何正确实现此功能?
"xpand"将完成这项工作,您还可以研究"letex",它是"let"one_answers"expand"的组合。
没关系,我找到了…
原来我需要使用expand。