首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在newLISP中将宏绑定到lambda中?

如何在newLISP中将宏绑定到lambda中?
EN

Stack Overflow用户
提问于 2012-03-18 04:55:41
回答 2查看 204关注 0票数 1

所以我有这样的功能:

代码语言:javascript
复制
(define (try try-block catch-block finally-block)
    ; Implements try/catch/finally like in most other languages
    )

为此,我想创建一个“助手”宏,它避免了反复说(lambda () ...)的需要,有点像setsetq

代码语言:javascript
复制
(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中。

如何正确地实现此功能?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-18 15:33:48

‘展开’将完成这项工作,你也可以查看'letex‘,这是一个’让‘和’展开‘的组合。

票数 1
EN

Stack Overflow用户

发布于 2012-03-18 09:07:24

算了,我找到了.

原来我需要使用扩展

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9756111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档