球拍语言变化&模块问题

时间:2013-08-22 12:15:45

标签: scheme racket sicp

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

当我需要使用'let'时,我不能使用初学者语言。 当我尝试更改语言或使用“高级”语言打开新文件时,我收到此错误:

module: identifier already imported from a different source
当我尝试加载图像模块时出现

错误(需要2htdp / image)。

发生了什么事?另外,有更好的方法可以在Scheme中训练图像吗?

2 个答案:

答案 0 :(得分:6)

目前尚不清楚为什么要首先使用2htdp/image。一个更有用的包将是Neil Van Dyke的SICP Support page,它提供了一种语言,支持书籍包括图形语言。这应该足以解决你的两个问题。

答案 1 :(得分:0)

正如Óscar所提到的,你最好使用#lang planet neil/sicp,但是,如果你想导入一些导出相同符号的东西,你可以在它们前面加上:

(require (prefix-in hi: 2htdp/image))

然后从那里导出的所有都有前缀hi:,例如。 (hi:circle 30 "outline" "red")。结肠并不特别。前缀可以是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)) 

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