gpt4 book ai didi

package - SLIME 交互式开发 - 将代码粘贴到 SLIME REPL != 来自缓冲区的 eval 命令

转载 作者:行者123 更新时间:2023-12-02 16:03:30 26 4
gpt4 key购买 nike

我正在尝试使用 asdf 创建一个名为“a”(学习)的基本包,我已经在 package.lisp 中定义了该包,我的主文件 a.lisp 开头为:

(in-package :a)
...

如果我正在开发我的模块,我只想通过执行 M-x slime-eval-buffer 或其他操作来将整个缓冲区运行 eval 到 SLIME REPL 中,但这不会发生,之后运行该命令我仍在 cl-user 包中:

;;; from a.lisp
A> (in-package :a)
#<PACKAGE "A">
CL-USER> <--- should have stayed in A>

但是,如果我自己将整个代码粘贴到 SLIME REPL 中,它就已经可以工作了。尽管对于交互式开发来说,一遍又一遍地粘贴大量代码根本不是一件好事。

你能帮忙吗?您对我的错误有什么建议吗?或者您通常如何应对这个问题?

谢谢。

最佳答案

Slime:缓冲区中的代码通常不会在 repl 中进行计算

I'd just like to run eval the whole buffer into the SLIME REPL by doing M-x slime-eval-buffer

该模型不是从源缓冲区“在 SLIME REPL 中进行评估”。人们评估连接的 Lisp 中的代码。这个连接的 Lisp 可能会为每个评估请求生成一个线程。

例如,您可以看到,在评估缓冲区后,通常的 REPL 变量如 * (最后的结果)不会更新。

当您将代码粘贴到 REPL 缓冲区中时,您可以从那里执行,并且它会执行 REPL 中的代码。

Slime:实际上是从 REPL 中的缓冲区进行计算

您可以将 Lisp 缓冲区中的代码评估到 REPL 中。请参阅命令 c-u m-x slime-eval-last-expression-in-repl 或更短的 c-u c-c c-jc-u 修饰符导致包的行为略有不同:

  1. 切换到 REPL 缓冲区
  2. 切换到源缓冲包
  3. 评估 REPL 中的源代码(包括设置 REPL 变量)
  4. 打印 REPL 缓冲区中的结果(包括设置 REPL 变量)
  5. 不要将 REPL 切换回其早期的包

注意:此行为特定于 SLIME,并不一定是其他环境的行为。

关于package - SLIME 交互式开发 - 将代码粘贴到 SLIME REPL != 来自缓冲区的 eval 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56089733/

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