如何动态包装现有函数,例如探查器?
我是 Lisp 的新手,正在尝试不同的事情来提高我的技能。我想编写一个宏来包装现有的函数,以便我可以为这些函数设置前后表单,有点像 CLOS 的辅助方法或 Elisp 的建议包。跟踪函数动态包装代码的能力引起了我的兴趣,而且我自己能够做到这一点似乎很有用。
我该怎么做?
请注意,我正在使用 SBCL,并且就这个问题而言,我对“正确”的做法并不感兴趣,而对添加到我的 Lisp 技巧包中则更感兴趣。
I am new at Lisp, and am trying different things out to improve my skills. I want to write a macro that wraps existing functions so that I can set up before and after forms for these functions, kind of like CLOS's auxilliary methods or Elisp's advice package. The trace function's ability to wrap code dynamically has intrigued me, and it seems useful to be able to do this myself.
How can I do this?
Please note that I am using SBCL, and that, for the purposes of this question, I am not interested so much in the "right" way of doing this as I am in adding to my Lisp trick bag.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道 CLOS 之外对此有任何内置支持。但你可以重新定义原始函数,如下所示:
I don't know of any built-in support for this outside of CLOS. But you could just redefine the original function, like this: