2

Racket で SICP グラフィック プログラムのいくつかを実装しようとしていますが、2 つの問題があります。

「let」を使用する必要がある場合、初級言語を使用できません。「高度な」言語を使用しているときに言語を変更したり、新しいファイルを開こうとすると、次のエラーが発生します。

module: identifier already imported from a different source

(require 2htdp/image) でイメージ モジュールを読み込もうとするとエラーが発生します。

どうしたの?また、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"). コロンは特別なものではありません。プレフィックスは だった可能性が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)) 

そして、あなたがこれを知っているとき、言語としてracketorを使わない理由はありません。racket/base

于 2013-08-22T23:14:27.603 に答える