Scheme 球拍语言的变化与发展;模块问题

Scheme 球拍语言的变化与发展;模块问题,scheme,racket,sicp,Scheme,Racket,Sicp,我正在尝试在Racket中实现一些SICP图形程序,但存在两个问题: 当我需要使用“let”时,我不能使用初学者语言。 当我尝试更改语言或在使用“高级”语言时打开新文件时,会出现以下错误: module: identifier already imported from a different source 尝试通过加载映像模块时出错(需要2htdp/image) 发生什么事了?此外,是否有更好的方法在Scheme中使用图像进行培训?不清楚您首先为什么要使用2htdp/image。尼尔·范·戴

我正在尝试在Racket中实现一些SICP图形程序,但存在两个问题:

当我需要使用“let”时,我不能使用初学者语言。 当我尝试更改语言或在使用“高级”语言时打开新文件时,会出现以下错误:

module: identifier already imported from a different source
尝试通过加载映像模块时出错(需要2htdp/image)


发生什么事了?此外,是否有更好的方法在Scheme中使用图像进行培训?

不清楚您首先为什么要使用
2htdp/image
。尼尔·范·戴克(Neil Van Dyke)的软件包更有用,它提供了一种支持本书的语言,包括图形语言。这应该足以解决您的两个问题。

正如奥斯卡提到的,您最好使用
#lang planet neil/sicp
,但是,如果您想导入导出相同符号的内容,您可以在它们前面加前缀:

(require (prefix-in hi: 2htdp/image))
然后,从中导出的所有文件都具有前缀hi:,例如
(hi:圈出30个“轮廓”“红色”)
。冒号没什么特别的。前缀可以是
xxx
,也可以是
xxxcircle

此外,您只能导入所需的符号:

; you only want circle and eclipse
(require (only-in 2htdp/image circle ellipse)) 
或者,您可以导入除某些符号以外的所有内容:

; everything except circle and ellipse
(require (except-in 2htdp/image circle)) 

当你知道这一点时,没有理由不使用
racket
racket/base
作为语言。

考虑不再使用学生语言(我知道你正在使用2htdp,但
#lang racket
和其他人只是打开了通往更多语言的大门)尝试过。。。我得到“tcp连接:禁止客户端访问planet.racket-lang.org:80如果您的网络出现问题,请与系统管理员联系……或者尝试在其他地方连接