使用在方案文件中定义的函数,在另一个方案文件中
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 编写的函数吗?
Intellisense for JavaScript 和 CSS 文件在单独的解决方案中