2

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

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

module: identifier already imported from a different source

当我尝试加载图像模块时出错(需要 2htdp/图像)。

这是怎么回事?另外,有没有更好的方法来训练 Scheme 中的图像?

4

2 回答 2

6

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

于 2013-08-22T12:21:15.773 回答
0

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

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

然后所有从那里导出的都带有前缀 hi:,例如。(hi:circle 30 "outline" "red"). 冒号没有什么特别的。前缀本来可以xxxxxxcircle.

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

; 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作为语言。

于 2013-08-22T23:14:27.603 回答