所以我有这样的功能:
(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中。
如何正确地实现此功能?
发布于 2012-03-18 15:33:48
‘展开’将完成这项工作,你也可以查看'letex‘,这是一个’让‘和’展开‘的组合。
发布于 2012-03-18 09:07:24
算了,我找到了.
原来我需要使用扩展。
https://stackoverflow.com/questions/9756111
复制相似问题