我正在尝试在Racket中实现一些SICP图形程序,但有两个问题:
当我需要使用'let'时,我不能使用初学者语言。 当我尝试更改语言或使用“高级”语言打开新文件时,我收到此错误:
module: identifier already imported from a different source
当我尝试加载图像模块时出现错误(需要2htdp / image)。
发生了什么事?另外,有更好的方法可以在Scheme中训练图像吗?
答案 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))
当您知道这一点时,没有理由不使用racket
或racket/base
作为语言。