質問
私はDrSchemeを使用してSICPを処理していますが、特定の手順(たとえば square
)が繰り返し使用されることに気付きました。これらを別のファイルに入れて、毎回書き直さずに他のプログラムに含めることができるようにしたいのですが、どうすればよいのかわかりません。
試しました:
(load filename)
(load (filename))
(load ~/path-to-directory/filename)
(require filename)
(require ~/path-to-directory/filename)
(require path-from-root/filename)
これらの作品はありません。明らかに私はストローを把握しています-どんな助けでも大歓迎です。
解決
使用している言語レベルが質問から明らかではありません。特定のレガシー言語により、特定のメカニズムが使用できなくなる場合があります。
最適な包含/抽象化メカニズムはモジュールのものです。
最初に、言語レベルを" module"に設定します。次に、これらの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"バッファとすべてが期待どおりに動作します。
警告:テストされていないコード。
他のヒント
あなたが探していると思う:
(include "relative/path/to/scheme/file.scm")
(必須)式はモジュールをロードするためのものです。
MIT / GNUスキームでは、次のようなファイルをロードできます。
(load "c:\\sample-directory\\sample-file.scm")
しかし、DrSchemeで動作するかどうかはわかりません。
(require "~/path-to-directory/filename")
所属していません StackOverflow