如何在newLISP中绑定lambda内部的宏



所以我有这个函数:

(define (try try-block catch-block finally-block)
    ; Implements try/catch/finally like in most other languages
    )

为此,我想创建一个"助手"宏,避免重复说(lambda () ...),有点像setsetq:

(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。

相关内容

  • 没有找到相关文章

最新更新