Sod*_*hty 13 scheme chicken-scheme
我对鸡肉(use)和(import)鸡肉之间的差异有点朦胧.同样,怎么办(load),(require)又有(require-extension)什么不同?
网站上似乎没有提到这些东西.
Joh*_*wan 15
Load并且require纯粹是运行时的程序性操作. Load接受一个字符串参数并将具有该名称的文件(可以是源代码或编译代码)加载到正在运行的Scheme中,以便它定义的任何内容都可用. Require做同样的事情,但通过查看是否provide已经使用相同的名称(通常是文件加载时)来检查文件是否已经加载.它们在Scheme编程中相对较少,对应于其他语言的插件,其中编译时未知的代码需要加载.有关eval详细信息,请参阅设备的手册页.
Import关注模块而不是文件.它查找必须已加载的命名模块(但参见下面的Chicken 5),并使从该模块导出的名称在当前上下文中可见.为了成功导入模块,必须有一个导入库.它是语法,因此模块名称必须在调用中显式出现,并且无法在运行时计算.有关详细信息,请参阅模块的手册页.
Require-library做正确的事来加载代码.如果代码已经是正在运行的Scheme的一部分,要么是因为它内置于Chicken,它什么都不做.否则,如果有核心库单元,它将加载核心库单元,或者require作为最后的手段调用.在编译时,它会做类似的事情以确保在运行时环境是正确的.有关详细信息,请参阅手册中的"非标准宏和特殊表单"页面.
Usea require-library后跟一个import同名的.这是为Chicken程序添加功能的最常用方法.但是,我们编写(import scheme)并(import chicken)因为已经加载了这些模块的功能. Require-extension是useSRFI 55兼容性的完全同义词.在R7RS模式下,import也是同义词use.
鸡肉更新5
Use已从语言中删除,import现在执行以下use操作:加载(如果需要)然后导入. Require-extension因此现在是...的同义词import.
此外,特定于鸡的程序和宏已被分解为名称为(chicken base)和的模块(chicken bitwise).
| 归档时间: |
|
| 查看次数: |
664 次 |
| 最近记录: |