gpt4 book ai didi

lisp - Common lisp : break, 但返回输入而不是 nil?

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:20 25 4
gpt4 key购买 nike

我是 lisp 的新手,正在边学边学。

标准的通用 lisp 中断函数 1. 将您弹出到调试器中,并且 2. 如果您选择继续,则返回 nil。

在我看来,将您弹出到调试器但返回其输入的中断函数将非常有用。然后,您可以将它透明地插入给定的 s 表达式周围,以查看此时程序的状态。

所以我可以做类似的事情

CL-USER> (break-transparent (+ 1 2))

这会让我进入调试器,让我环顾四周,然后返回

3

lisp 中是否有这样的东西,如果没有,有没有办法制作这样的东西?我还不太擅长宏。

谢谢,

编辑:Doug Currie 用一个简单的宏在下面亲切地回答了这个问题。这是我为其他任何有此问题的人稍微修改过的版本,它在调试器窗口中显示了 break-transparent front and center 的参数。

(defmacro break-transparent (exp)
`(let ((x ,exp)) (break "argument to break: ~:S" x) x))

最佳答案

您可以将 break-transparent 编写为扩展为的宏:

(progn
(break)
(+ 1 2))

或者如果你真的想在中断前计算表达式:

(let ((x (+ 1 2)))
(break)
x)

所以,

(defmacro (break-transparent exp)
`(let ((x ,exp)) (break) x))

关于lisp - Common lisp : break, 但返回输入而不是 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18927986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com