Lisp 通过SICP工作的最佳方案是什么?

Lisp 通过SICP工作的最佳方案是什么?,lisp,scheme,sicp,Lisp,Scheme,Sicp,我一直在使用,但它有一些问题。有人知道更好的通过SICP工作的实现吗?使用 它由SICP的作者推荐,并在麻省理工学院用于《计算机程序的结构和解释》课程。,只需确保加载SICP兼容性(是的,它们提供了特定的库来增强SICP练习的工作保障)。效果很好,或者按照Keparo的建议。您对此有什么问题?使用(以前是PLT方案) DRracketIDE是包括SICP在内的所有事物方案的一个极好的起点 要在文档中查找关键字,请将光标放在关键字上,然后按F1键。在DrRacket中,您现在可以直接在REPL(r

我一直在使用,但它有一些问题。有人知道更好的通过SICP工作的实现吗?

使用

它由SICP的作者推荐,并在麻省理工学院用于《计算机程序的结构和解释》课程。

,只需确保加载SICP兼容性(是的,它们提供了特定的库来增强SICP练习的工作保障)。

效果很好,或者按照Keparo的建议。您对此有什么问题?

使用(以前是PLT方案)

DRracketIDE是包括SICP在内的所有事物方案的一个极好的起点

要在文档中查找关键字,请将光标放在关键字上,然后按F1键。在DrRacket中,您现在可以直接在REPL(read-eval-print循环)中看到图像

,作者:尼尔·范·戴克

更新(2016):新的SICP包位于 使用软件包管理器(在DrRacket中)下载或使用
raco

Update2(2016):如果您想尝试SICP图片语言的新实现,请下载


更新3(2020):sicp语言包包括sicp语言和sicp图片语言的实现

文档:
源代码:
球拍套装:


注意:图片语言比书中描述的图片语言有更多的功能(例如颜色和更大的尺寸)。源代码包含示例:

我本周刚开始做SICP

目前,麻省理工学院的方案在Ubuntu Linux(9.04“jaunty”)中被打破。它在将来可能会起作用


该计划正在运作,而且运作良好。您可以使用上面列出的soegard软件包或Neil Van Dyke软件包,该软件包基于soegard软件包,可从以下网站获得。这个软件包的好处是,安装后,您可以使用语言|选择语言。。。。用于选择SICP的菜单项。

具有提供SICP支持的。您可以通过运行
chicken install sicp
并在源代码的开头编写以下内容来安装它:
(使用sicp)

在macOS上完成这项操作令人非常恼火。假设你有自制软件,下面是它今天的工作原理。(可能需要偶尔运行一次
brew update

现在您可以
(需要sicp)
或只需运行

racket -l sicp --repl
您可能希望将其缩写为
scheme
。在bash,那是

alias scheme='racket -l sicp --repl'

您可以将其添加到您的
~/.bashrc

中,我现在正在使用。这是一种相当古老的Scheme方言,所以它大概与SICP所写的内容相差不远

请注意,Chez Scheme项目页面链接了可以在类Unix平台上构建的Windows二进制文件和源代码。但如果你在Mac电脑上,你可能会想

brew chezscheme
man chez
假设你有,你真的应该

为什么麻省理工学院的计划不行?因为交互式前端是Edwin,一个使用EMACS约定的编辑器。(目前,这是一个实际的EMACS模式,尽管它以前是在Scheme中实现的。)我过去知道基本的EMACS,但我的技能因废弃而衰退,这告诉我,重新学习这个编辑器是不值得的

为什么不把球拍拍拍下来?如果我看过@frederick squid的brew说明,我可能会尝试一下。相反,我试图遵循scheme和sicp的官方指示,它们已经严重过时。然后我尝试让IDE进入scheme模式,这似乎是直观的,但不是


太麻烦了。我不确定我是否想进入一个奇特的语言设计IDE,尤其是一个对Scheme支持不足的人引发了最初的问题。

我不喜欢MIT Scheme的一点是,我不知道如何简单地从命令行执行Scheme脚本,并将其输出显示在我的控制台中,就像我希望运行Python或Ruby脚本一样。我是不是太笨了?如何实现这一点,而不启动基于Emacs的大型交互式环境,然后每次都必须退出它?这里有一个预构建的64位版本的mit方案-[刚刚使用GNU站点上提供的源代码在Ubuntu X64上成功编译。从命令行执行:@JonathanHartley注意:Neil van Dyke为Racket编写了一个非常好的SICP包。使用这个,而不是我的旧包。嗯,OP询问了PLT方案,该方案后来成为DrScheme,然后是DrRacket,最后是Rocket lang。警告:这是不可能的安全安装SICP支持包。运行该代码时(
#lang planet neil/SICP
),它尝试通过普通http下载内容,因此可能会受到MitM攻击。当下载将在您的计算机上执行的代码时,这是一件大事。该页面无法通过https获得,这也意味着您可以获得任何内容,而不是内容。我希望作者在某个时候修复它。不要担心。SICP包具有从PLaneT下载到pkgs.racket-lang.org.Note:图片语言有更多功能(例如颜色和更大的尺寸)比书中描述的图片语言要好。源代码包含示例:您不必使用Edwin来运行MIT Scheme。Edwin只是在命令行脚本上指定为一个选项,您可以更改它。我在Emacs(24)下运行MIT Scheme,设置为默认方案实现,因此M-x“运行方案”立即启动我想要的麻省理工学院环境(机械/scmutils)。如果你稍微想一想,这是非常简单的。Dr Racket与“lang sicp”选项的接口也非常好,我们已经从糟糕的旧时代走了很长一段路。。。(所有这些都在Ubuntu上,16.04 LTS)你注意到我说过我不想重新学习EMACS吗?如果你能告诉我可以用来将MIT Scheme与我最喜欢的编辑器集成在一起的命令行文档,那将是有用的信息。对不起,我手头没有文档,但MIT Scheme与任何编辑器都没有关系。我
brew chezscheme
man chez