我正在尝试使用SICP,我得到了一些代码.所以我开始:
#lang scheme
(word 'comp 'uter)
Run Code Online (Sandbox Code Playgroud)
返回错误:函数(字)未定义.
即使我试图将其复制到IDE(运行):
(define word?
(let ((number? number?)
(symbol? symbol?)
(string? string?))
(lambda (x)
(or (symbol? x) (number? x) (string? x)))))
Run Code Online (Sandbox Code Playgroud)
还是一样.
我认为这可能是语言版本的某些问题或者其他问题.
以上是"简单方案",当我在SICP中引入代码时:
(define (sqrt x)
(sqrt-iter 1.0 x))
Run Code Online (Sandbox Code Playgroud)
IDE返回sqrt-iterundefined.代码可以在第一章找到:http://mitpress.mit.edu/sicp/code/index.html
Syl*_*ter 37
在DrRacket中有一种SICP兼容性语言
在文档中有一个简单的指南,介绍如何从DrRacket安装它:
打开包管理器:在DrRacket中选择菜单"文件",然后选择"包管理器...".
在"Do Do I Mean"选项卡中找到文本字段并输入:"sicp"
单击"安装"按钮.这会产生大量的输出.即使有警告,也不要担心.
测试一下.确保DrRacket在左下角有"从源确定语言".编写以下程序并单击RUN:
#lang sicp
(inc 42)
; ==> 43
Run Code Online (Sandbox Code Playgroud)这是一个使用图片语言的更高级的测试,需要包括#%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 Code Online (Sandbox Code Playgroud)
单击RUN,您应该会在交互窗口中看到一个朝向中心更亮的方块.
或者,您也可以通过运行以下命令从终端/ shell执行步骤1-3:
raco pkg install sicp
Run Code Online (Sandbox Code Playgroud)
从这里开始,在第一个安装说明中执行步骤4.进行测试.
raco pkg不起作用,使用星球的旧版本或DrRacket在DrRacket中还有一个旧版本的SICP兼容性语言.虽然左下角的选择框位于"从源确定语言",但您可以添加:
#lang planet neil/sicp
Run Code Online (Sandbox Code Playgroud)
作为定义中的唯一一行(顶部文本区域)并按下RUN它将被安装.重新启动DrRacket,您将在语言下拉菜单中找到它.祝好运.您可能会收到许多红色的错误消息.只需忽略它并重新启动DrRacket.您可能无法在语言菜单中找到该选项,但通过使用#lang planet neil/sicp它启动每个文件仍可用作模块语言.
从错误来看,它似乎与图片语言模块有关.我测试了这个片段,它仍然有效:
(paint-hires (below (beside diagonal-shading
(rotate90 diagonal-shading))
(beside (rotate270 diagonal-shading)
(rotate180 diagonal-shading))))
Run Code Online (Sandbox Code Playgroud)
Yon*_* Wu 17
Sylwester的回答是我想要的.但是,我注意到Racket 6.5 增加了对SICP的直接支持.我想人们可能想知道这一点.
现在,在添加SICP支持后,可以在Racket中编写如下代码:
#lang sicp
(#%require sicp-pict)
(paint einstein)
Run Code Online (Sandbox Code Playgroud)