将 mit-scheme 与 REPL 和编辑器一起使用

Use mit-scheme with REPL and editor together

我正在学习 SICP 课程并按照建议安装 mit-scheme。我想将 REPL 与方案文件一起使用。原因是因为我可以在文件中添加方案代码,然后 运行 REPL 中的命令。我所做的工作,但问题是每次我编辑文件时,我都必须退出终端并重新加载文件以便 REPL 看到更改。

有没有一种方法可以轻松地重新加载文件或通过其他方式让 REPL 查看文件的更改?

这是我的设置:

  1. 我用 brew install mit-scheme
  2. 安装了 mit-scheme
  3. 我有一个名为 code.scm
  4. 的本地文件
  5. 在终端中,我使用 mit-scheme --load /Users/name/Desktop/code.scm
  6. 加载文件
  7. 终端现在启动 REPL,一切正常。问题是,如果我向文件 code.scm 添加新代码,我必须退出终端并再次调用:mit-scheme --load /Users/name/Desktop/code.scm

系统详情:

问题编辑 #1(基于以下答案)

我尝试按照说明进行操作,但这很复杂。

这是我做的:

  1. 运行 mit-scheme < /Users/Desktop/code.scm

  2. 之后我 运行 mit-scheme --edit 打开 Edwin。我尝试使用 code.scm 文件中的代码,但它无法识别它。这是 code.scm 文件中的代码:

这就是我希望能够做到的: 请注意,在这张图片中,我可以键入命令,按回车键,它会自动执行 运行s 命令。但是,我希望能够调用 (fib 5) 并且它引用 code.scm 文件中的函数。

有人可以一步步解释如何做到这一点吗?查看方案网站的文档令人困惑。

您应该将 emacs 与 xscheme.el 一起使用。效果好多了。

如果你继续这样做,你也可以做mit-scheme < code.scmmit-scheme --edit code.scm,你也会得到一个*repl* buffer inside edwin

不过,我推荐你使用 emacs 方式。

MIT Scheme REPL 中实际上有一个 built-in load 过程可用。 正在评估

(load "path/to/file.scm")

导致位于 path/to/file.scm 的 Scheme 文件在顶层被计算(注意文件名两边的双引号是必需的)。

而且,事实证明,这个相同的函数可用于重新加载 文件。 考虑到这一点,可能的“工作流程”可能如下所示:

  • 创建新的源文件
  • 在 REPL
  • 中计算 (load "path/to/file.scm")
  • 编辑源文件
  • 在 REPL
  • 中计算 (load "path/to/file.scm")
  • ...等等

不幸的是,我认为没有 built-in“重新加载”程序。 但是......如果你发现自己经常重新加载(正如我想象的那样),你总是可以在黑客开始时快速编写自己的 session:

(define (reload)
  (load "path/to/file.scm"))

然后只要对源文件进行更改就调用 (reload)

如果您对使用 Emacs 感兴趣,我认为值得一试。 有一点学习曲线,但并不像前面看起来那么陡峭:)

此外,我对 Racket 编程语言的推荐还不够。 有一种非常简单的方法可以为 SICP 设置它,而且它是一个比 Emacs 宽容得多的环境。 如果您有兴趣并需要任何入门帮助,请告诉我。

(load "/path/to/file") 您应该可以在 MIT Scheme and the Edwin editor it comes with. However, I would actually recommend that you use Emacs, and use Geiser within that to access both the REPL and to help with scheme file editing. It also makes dealing with various Scheme REPLs such as Chez Scheme, Racket, MIT Scheme, Guile, Chicken, Gambit and Chibi Scheme fairly effortless. The same (load "/path/to/file") command would then be available to you within the REPL running under Geiser, within Emacs, but is generally much more powerful and seamless than when using the "naked" REPL. Emacs 中使用一个命令,该命令非常适合与 Scheme 和 LISP 一起使用。强烈推荐。

评估整个缓冲区:press M-o(M 在 Windows 上为 Alt)。在源文件 window 中时,按下它。它将评估整个缓冲区,即(重新)加载整个源文件(甚至不先保存)。我通过 谷歌搜索“mit scheme edwin 教程” 找到了它。 Edwin 有点像 Emacs 本身。

This page says: "C-c C-s when done in a scheme-mode buffer [i.e. Scheme source file window], will switch to the Scheme interaction buffer [i.e. REPL]". i.e. you press C-x C-s to save file,M-o 评估(即加载),C-c C-s 切换到 REPL。

如果您在源文件缓冲区和 REPL(“交互缓冲区”)之间使用 C-x 2 分割屏幕,您可以通过按 C-x o 在它们之间切换(对于“转到另一个 window").