我一直在使用PLT Scheme,但它有一些问题。有谁知道通过 SICP 工作的更好实施?
8 回答
使用Racket(以前的 PLT 方案)。
DrRacket IDE 是所有方案(包括 SICP)的绝佳起点。
要在文档中查找关键字,请将光标放在关键字上并按F1。在 DrRacket 中,您现在可以直接在 REPL(读取评估打印循环)中查看图像。
Neil van Dyke对 DrRacket 的 SICP 支持。
更新(2016 年):新的 SICP 包位于http://pkgs.racket-lang.org/#[sicp]
使用包管理器(在 DrRacket 中)下载它或使用raco
.
手动的
Update2 (2016):另外,如果您想尝试 SICP 图片语言的新实现,请下载sicp-pict2.rkt。
Update3 (2020): sicp-lang 包包括 sicp 语言和 sicp 图片语言的实现。
文档:SICP 支持 DrRacket
源代码:GitHub
Racket 上的 sicp-lang 包:sicp-lang 包信息
注意:图片语言比书中描述的图片语言有更多的特点(例如颜色和更大的尺寸)。源代码包含示例:https ://github.com/sicp-lang/sicp/blob/master/sicp-pict/main.rkt
使用麻省理工学院方案。
它由 SICP 的作者推荐,并在 MIT 用于6.001:计算机程序的结构和解释课程。
MIT/GNU Scheme,只要确保你加载了 SICP 兼容包(是的,它们提供了特定的库来增强保证 SICP 练习的工作)。
这在 macOS 上完成令人惊讶地烦人。假设你有 Homebrew,这是它今天的工作方式。(可能想brew update
偶尔运行一次)。
brew cask install racket
raco setup # might be optional
raco pkg install sicp
现在您可以(require sicp)
或简单地运行
racket -l sicp --repl
您可能想要缩写为scheme
. 在bash中
alias scheme='racket -l sicp --repl'
您可以添加到您的~/.bashrc
我这周刚开始做SICP。
目前,MIT 方案在 Ubuntu Linux(9.04 “jaunty”)中被破解。它可能在未来起作用。
DrScheme 正在运行,并且运行良好。您可以使用上面列出的 soegard 的包或 Neil Van Dyke 的包,它基于 soegard 的包,可从http://www.neilvandyke.org/sicp-plt/获得。这个包的好处是,安装后,您可以使用 Language|Choose Language.... 菜单项来选择 SICP。
CHICKEN Scheme有一个为 SICP提供支持的sicp 库。chicken-install sicp
您可以通过在源代码的开头运行并编写它来安装它: (use sicp)
.
PLT Scheme运行良好,或者Keparo 建议的MIT Scheme 。你有什么问题?
我现在正在使用Chez Scheme通过 SICP 工作。这是一个相当古老的 Scheme 方言,所以大概它与 SICP 的写法相距不远。
请注意,Chez Scheme 项目页面链接了可以在类 Unix 平台上构建的 Windows 二进制文件和源代码。但如果你在 Mac 上,你可能想要做
brew chezscheme
man chez
假设你有homebrew,你真的应该这样做。
为什么不是麻省理工学院计划?因为交互式前端是 Edwin,一个使用 EMACS 约定的编辑器。(目前,它是一个实际的 EMACS 模式,它曾经在 Scheme 中实现。)我曾经了解基本的 EMACS,但我的技能因废弃而萎缩,这告诉我重新学习这个编辑器是不值得的。
为什么不 DrRacket?如果我看过 @frederick-squid 的 brew 说明,我可能会尝试一下。相反,我尝试遵循严重过时的 scheme 和 sicp 的官方说明。然后我试图让 IDE 进入方案模式,这似乎很直观,但不是。
就是太麻烦了。而且我不确定我是否想进入一个花哨的语言设计 IDE,尤其是一个对 Scheme 支持不佳的 IDE 引发了最初的问题。