Chicken Scheme 中的 Use vs Import vs Require vs Require-extension
Use vs Import vs Require vs Require-extension in Chicken Scheme
我对 Chicken 中 (use)
和 (import)
之间的区别有点模糊。同样,(load)
、(require)
和 (require-extension)
有何不同?
这些东西在网站上好像没怎么提到
Load
和 require
纯粹是 运行 时间,程序操作。 Load
接受一个字符串参数并将具有该名称的文件(可以是源代码或编译代码)加载到 运行ning 方案中,以便它定义的任何内容都可用。 Require
做同样的事情,但是通过查看 provide
是否以相同的名称调用(通常是在文件加载时调用)来检查文件是否已经加载。它们在Scheme编程中比较少见,对应其他语言的插件,需要加载编译时未知的代码。有关详细信息,请参阅单元 eval
的手册页。
Import
关注模块而不是文件。它查找命名模块,该模块必须已经加载(但请参阅下面的 Chicken 5),并使从该模块导出的名称在当前上下文中可见。为了成功导入一个模块,必须有一个导入库。它是语法,因此模块名称必须显式出现在调用中,并且不能在 运行 时计算。有关详细信息,请参阅模块手册页。
Require-library
正确加载代码。如果代码已经是 运行ning Scheme 的一部分,要么因为它内置于 Chicken 中,它什么都不做。否则它将加载一个核心库单元(如果有的话),或者将调用 require
作为最后的手段。在编译时,它会做类似的事情来确保环境在 运行 时是正确的。有关详细信息,请参阅手册中的 "Non-standard macros and special forms" 页。
Use
在同名上执行 require-library
后跟 import
。这是向您的 Chicken 程序添加功能的最常见方式。但是,我们写 (import scheme)
和 (import chicken)
是因为这些模块的功能已经加载。 Require-extension
是 use
的同义词,提供 SRFI 55 兼容性。在 R7RS 模式下,import
也是 use
的同义词。
小鸡 5 更新
Use
已从语言中删除,import
现在做 use
过去做的事情:加载(如果需要)然后导入。 Require-extension
因此现在是 import
的同义词。
此外,Chicken 特定的过程和宏已被分解为名称如 (chicken base)
和 (chicken bitwise)
的模块。
我对 Chicken 中 (use)
和 (import)
之间的区别有点模糊。同样,(load)
、(require)
和 (require-extension)
有何不同?
这些东西在网站上好像没怎么提到
Load
和 require
纯粹是 运行 时间,程序操作。 Load
接受一个字符串参数并将具有该名称的文件(可以是源代码或编译代码)加载到 运行ning 方案中,以便它定义的任何内容都可用。 Require
做同样的事情,但是通过查看 provide
是否以相同的名称调用(通常是在文件加载时调用)来检查文件是否已经加载。它们在Scheme编程中比较少见,对应其他语言的插件,需要加载编译时未知的代码。有关详细信息,请参阅单元 eval
的手册页。
Import
关注模块而不是文件。它查找命名模块,该模块必须已经加载(但请参阅下面的 Chicken 5),并使从该模块导出的名称在当前上下文中可见。为了成功导入一个模块,必须有一个导入库。它是语法,因此模块名称必须显式出现在调用中,并且不能在 运行 时计算。有关详细信息,请参阅模块手册页。
Require-library
正确加载代码。如果代码已经是 运行ning Scheme 的一部分,要么因为它内置于 Chicken 中,它什么都不做。否则它将加载一个核心库单元(如果有的话),或者将调用 require
作为最后的手段。在编译时,它会做类似的事情来确保环境在 运行 时是正确的。有关详细信息,请参阅手册中的 "Non-standard macros and special forms" 页。
Use
在同名上执行 require-library
后跟 import
。这是向您的 Chicken 程序添加功能的最常见方式。但是,我们写 (import scheme)
和 (import chicken)
是因为这些模块的功能已经加载。 Require-extension
是 use
的同义词,提供 SRFI 55 兼容性。在 R7RS 模式下,import
也是 use
的同义词。
小鸡 5 更新
Use
已从语言中删除,import
现在做 use
过去做的事情:加载(如果需要)然后导入。 Require-extension
因此现在是 import
的同义词。
此外,Chicken 特定的过程和宏已被分解为名称如 (chicken base)
和 (chicken bitwise)
的模块。