3

DrSchemeを使用してSICPを処理していますが、特定の手順(たとえばsquare)が何度も使用されていることに気づきました。毎回書き直さなくても他のプログラムに入れられるように別のファイルに入れたいのですが、どうすればいいのかわからないようです。

私はもう試した:

(load filename)
(load (filename))
(load ~/path-to-directory/filename)
(require filename)
(require ~/path-to-directory/filename)
(require path-from-root/filename)

これらの作品はありません。明らかに私はストローをつかんでいます-どんな助けでも大歓迎です。

4

4 に答える 4

4

あなたの質問からは、あなたが使用している言語レベルが明確ではありません。特定のレガシー言語では、特定のメカニズムが利用できなくなる場合があります。

最適な包含/抽象化メカニズムは、モジュールのメカニズムです。

まず、言語レベルを「モジュール」に設定します。次に、これら 2 つのファイルが同じディレクトリにある場合:

ファイル uses-square.ss:

#lang scheme

(require "square.ss")

(define (super-duper x) (square (square x)))

ファイル square.ss :

#lang scheme

(provide square)

(define (square x) (* x x))

次に、「uses-square.ss」バッファで「実行」を押すと、すべてが期待どおりに機能します。

警告: テストされていないコード。

于 2009-12-16T22:15:55.593 に答える
4

私はあなたが探していると信じています:

(「relative/path/to/scheme/file.scm」を含める)

(require) 式は、モジュールをロードするためのものです。

于 2009-07-30T16:21:25.723 に答える
1

MIT / GNUスキームでは、次のようなファイルをロードできます。

(load "c:\\sample-directory\\sample-file.scm")

しかし、それがDrSchemeで機能するかどうかはわかりません。

于 2009-10-06T10:14:29.323 に答える
1
(require "~/path-to-directory/filename")
于 2009-10-06T10:17:12.623 に答える