使用在方案文件中定义的功能,在另一个方案文件中

sar*_*123 1 scheme function include

我是Scheme的新手。我编写了一个程序,该程序定义了一个名为“ run”的函数,并将其存储为“ Run.scm”。然后,我有一个“ test.scm”文件,该文件使用了我在“ Run.scm”中定义的“运行”功能。我不知道如何在“ test.scm”中包含“ Run.scm”,以便可以在测试文件中使用“ run”功能。谁能帮我?

Syl*_*ter 5

兼容方法

如果您有带有源代码的文件,则可以在任何Scheme兼容程序中使用load。因此,在测试中,您可以执行以下操作:

% ls
test.scm Run.scm
Run Code Online (Sandbox Code Playgroud)

test.scm的内容

(load "Run.scm")
(run)
Run Code Online (Sandbox Code Playgroud)

更好的新方法(R6RS及更高版本)

如果您有R6RS或R7RS,则可以制作一个库。它是特定于实现的,如何将库合并到其中,而不是源文件的外观。阅读有关如何将库添加到系统的文档。

然后,想象您已经建立了一个awesome/utility.scm图书馆。在R6rs / R7RS中,您可以将其添加到代码中,如下所示:

(import (awesome utility))
;; start using the imported code..
(awesome-function '(1 2 3 4)) ; ==> (4 3 2 1)
Run Code Online (Sandbox Code Playgroud)

R5RS方案的替代方案

由于R5RS和更早的版本,load大多数实现都以自己的方式来加载库和源文件。例如。球拍有require,鸡计有import。要使用这些文件,您将只能与一个供应商联系,但是许多库通过构建特定于实现的起始文件来完成此任务,该文件以特殊方式导入其他文件以找出它们之间的差异,或者基于带有gnu make的零件来创建源文件。或类似程序。