mit-scheme 对 SiCM 的图形支持

标签 mit-scheme sicm

我正在尝试处理 Structure and Interpretation of Classical Mechanics 的示例。这本书是基于 mit-scheme 的。由于某种原因,mit-scheme 安装无法使用图形:

MIT/GNU Scheme running under GNU/Linux
Type `^C' (control-C) followed by `H' to obtain information about interrupts.

Copyright (C) 2014 Massachusetts Institute of Technology
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Image saved on Saturday May 17, 2014 at 2:39:25 AM
  Release 9.2 || Microcode 15.3 || Runtime 15.7 || SF 4.41 || LIAR/x86-64 4.118 || Edwin 3.116

1 ]=>(define win1 (frame 0 7 -2 2))

    ;Loading "/usr/lib/mit-scheme-x86-64/lib/prx11.so"... aborted
    ;No graphics types supported.

最佳答案

只是为了澄清(即使 OP 中链接的 github 页面已经有它),您应该使用 scmutils ,并且不是普通的MIT计划。 scmutils 包含自己的 mit-scheme 实现以及专门为书中的经典力学形式主义设计的大量附加内容。要在 Macos 上安装 scmutils,请确保将机制脚本复制到/usr/local/bin,并将 scmutils 文件夹复制到/usr/local。

此外,scmutils 需要一个 x-window 系统来运行 edwin,并能够弹出 xdvi 来渲染 Latex 方程。对于 mac os,最好的选择可能是 Xquartz,它可以通过brew 安装。

正确安装后,加上一个工作 latex (Macos 的 BasicTex 工作正常)以及 xdvi(可以通过执行 brew install gv 获得),并假设您的 xwindow 系统是最新的,您应该能够输入mechanics 并进入特殊的 scmutils edwin 程序,该程序将在新的 X 窗口中打开,而不是在当前终端中打开,您可以执行 (show-expression '(+ x y)) 并让 xdvi 打开一个整齐打印的 latex 表达式“x+y”。此外,(frame 0 7 -2 2) 也可以正常工作。

我可以确认它可以在 Mac OS 上运行,并使用brew 安装了 Xquartz、BasicTeX 和 xdvi。

注意 Edwin 明显不如 Emacs,上述操作实际上可以在 mac os 上的 Emacs 中完成。确保安装最新的 Emacs,无论是通过 brew cask 还是通过 google“emacs for mac os”。然后,您需要将以下内容添加到 .emacs 文件中:

(defun mechanics ()
  (interactive)
  (let ((root "/usr/local/scmutils/mit-scheme/"))
    (run-scheme
      (concat root "bin/scheme --library " root "lib"))))
(setenv "PATH"
    (concat "/Library/TeX/texbin"
            (getenv "PATH")))

setenv是为了让emacs知道xdvi所在的位置;可以在终端中使用 which dvi 找到它。然后在 emacs 中,执行 M-xmechanis ,您就可以执行 (show-expression 'x),这将弹出一个 xdvi 窗口,其中包含在 Latex 中渲染的表达式,以及(帧 0 7 -2 2)

关于mit-scheme 对 SiCM 的图形支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390946/

相关文章:

emacs - 申请号码不准(方案)

scheme - 为什么我在 Scheme 函数中出现 `Generic operator inapplicable` 错误

scheme - 方案中标识符和符号之间的区别?

mit-scheme - 如何在linux中为sicp添加mit-scheme

scheme - 如何在 MIT-Scheme 的条件表达式中写入标准输出?

linux - 如何在 Ubuntu 8.10 中为 6.001 设置 MIT Scheme

algorithm - 为什么我的立方根算法是错误的? SICP 练习 1.8