使用在方案文件中定义的函数,在另一个方案文件中

Posted

技术标签:

【中文标题】使用在方案文件中定义的函数,在另一个方案文件中【英文标题】:using a function which is defined in a scheme file, inside another scheme file 【发布时间】:2014-05-17 04:07:13 【问题描述】:

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

【问题讨论】:

您使用的是哪种方案? 【参考方案1】:

兼容方法

如果你有一个包含源代码的文件,你可以在任何符合 Scheme 的程序中使用load。所以在你的测试中你可以这样做:

% ls
test.scm Run.scm

test.scm 的内容

(load "Run.scm")
(run)

新的更好的方式(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)

R5RS 方案的替代方案

由于 R5RS 和更早的版本只有 load,大多数实现都采用了自己的方式来加载库和源文件。例如。 Racket 有require,Chicken Scheme 有import。使用这些会将您锁定在一个供应商上,但是许多库通过构建一个特定于实现的启动文件来做到这一点,该文件以特殊方式导入其他文件以找出它们之间的差异,或者使用 gnu make 基于部件制作源文件或类似的程序。

【讨论】:

以上是关于使用在方案文件中定义的函数,在另一个方案文件中的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在另一个 JS 文件中调用用一个 JavaScript 编写的函数吗?

在C的头文件中定义的结构体,如何在cpp文件中引用

Intellisense for JavaScript 和 CSS 文件在单独的解决方案中

linux下链接出现未定义的应用解决方案

在nodejs中使用azure blob存储触发器在另一个容器中压缩和写入文件

在另一个中包含一个 C 源文件?