我正在使用DrScheme来完成SICP,我注意到某些过程(例如,square
)被反复使用。我想将它们放在一个单独的文件中,以便我可以将它们包含在其他程序中,而不必每次都重写它们,但我似乎无法弄清楚如何做到这一点。
我试过了:
(load filename)
(load (filename))
(load ~/path-to-directory/filename)
(require filename)
(require ~/path-to-directory/filename)
(require path-from-root/filename)
这些都不起作用。显然我正在抓住稻草 - 任何帮助都非常感激。
答案 0 :(得分:4)
我相信你在寻找:
(include "relative/path/to/scheme/file.scm")
(require)表达式用于加载模块。
答案 1 :(得分:4)
从您的问题中不清楚您正在使用的语言级别;某些遗留语言可能会使某些机制无法使用。
最佳的包含/抽象机制是模块。
首先,将语言级别设置为“模块”。然后,如果我在同一目录中有这两个文件:
文件使用-quare.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”缓冲区上点击“run”,一切都会按照你期望的方式运行。
警告:未经测试的代码。
答案 2 :(得分:1)
在MIT / GNU Scheme中,您可以使用以下内容加载文件:
(load "c:\\sample-directory\\sample-file.scm")
但我不知道它是否适用于DrScheme。
答案 3 :(得分:1)
(require "~/path-to-directory/filename")