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

我相信您正在寻找:

(包括“relative/path/to/scheme/file.scm”)

(require) 表达式用于加载模块。

于 2009-07-30T16:21:25.723 回答
4

从您的问题中不清楚您使用的是什么语言级别;某些遗留语言可能会使某些机制不可用。

最好的包含/抽象机制是模块。

首先,将您的语言级别设置为“模块”。然后,如果我在同一个目录中有这两个文件:

文件使用-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 回答
1

在 MIT/GNU Scheme 中,您可以使用以下内容加载文件:

(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 回答