我正在尝试使用 SICP,并得到了一些代码。 所以我开始:
#lang scheme
(word 'comp 'uter)
返回错误:函数(字)未定义。
即使我尝试将其复制到 IDE(运行)中:
(define word?
(let ((number? number?)
(symbol? symbol?)
(string? string?))
(lambda (x)
(or (symbol? x) (number? x) (string? x)))))
还是一样。
我认为这可能是语言版本或其他问题。
<小时/>以上来自“SimplyScheme”,当我在SICP中完全引入代码时:
(define (sqrt x)
(sqrt-iter 1.0 x))
IDE 返回 sqrt-iter
未定义。代码可以在第一章找到:http://mitpress.mit.edu/sicp/code/index.html
最佳答案
在 DrRacket有一个SICP compatibility language
1。从包管理器
在 documentation DrRacket 有一个简单的安装指南:
打开包管理器:在 DrRacket 中选择菜单"file",然后选择“包管理器...”。
在“Do What I Mean”选项卡中找到文本字段并输入:“sicp”
单击“安装”按钮。这会产生大量输出。即使有警告也不要担心。
测试一下。确保 DrRacket 中具有“确定源语言” 左下角。编写以下程序并单击RUN:
#lang sicp (inc 42) ; ==> 43
这里有一个更高级的测试,使用图片语言,需要包含在#%require
中:
#lang sicp
(#%require sicp-pict)
;; paint-hires / paint-hi-res renamed to just paint
(paint (below (beside diagonal-shading
(rotate90 diagonal-shading))
(beside (rotate270 diagonal-shading)
(rotate180 diagonal-shading))))
点击RUN,您应该会在交互窗口中看到一个正方形,该正方形向中心变亮。
2 命令行安装
或者,您也可以通过运行以下命令从终端/shell 执行步骤 1-3:
raco pkg install sicp
从这里开始,您可以执行第一个安装说明中的步骤 4. 来测试它。
3。如果 raco pkg
不起作用,则使用较旧版本或使用 Planet 的 DrRacket
在 DrRacket 中还有一个 old version of SICP compatibility language 。当“从源中确定语言”处有左下选择框时,您可以添加:
#lang planet neil/sicp
作为定义中的唯一行(顶部文本区域)并按RUN,它将被安装。重新启动 DrRacket,您将在语言下拉列表中找到它。祝你好运。
您可能会收到很多红色的错误消息。忽略它并重新启动 DrRacket 即可。您可能不再在语言菜单中找到该选项,但通过使用 #lang Planet neil/sicp
启动每个文件,它仍然可以作为模块语言使用。
从错误来看,似乎与图片语言模块有关。我测试了这个代码片段,它仍然有效:
(paint-hires (below (beside diagonal-shading
(rotate90 diagonal-shading))
(beside (rotate270 diagonal-shading)
(rotate180 diagonal-shading))))
关于scheme - 哪种语言包适合 Drracket 中的 SICP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19546115/