在方案 R7RS 中既有 aload
又有include
形式。
包括描述为:
语义:include 和 include-ci 都采用一个或多个文件名表示为字符串文字,应用特定于实现的算法来查找相应的文件,按照指定的顺序读取文件的内容,就像通过重复应用 read 一样,有效地重新- 将 include 或 include-ci 表达式与 begin 表达式一起放置,该表达式包含从文件中读取的内容。两者的区别在于 include-ci 读取每个文件,就好像它以 #!fold-case 指令开头一样,而 include 不是。注意:鼓励实现在包含包含文件的目录中搜索文件,并为用户提供一种方法来指定要搜索的其他目录。
负载描述为:
依赖于实现的操作用于将文件名转换为包含方案源代码的现有文件的名称。加载过程从文件中读取表达式和定义,并在 environment-specifier 指定的环境中按顺序评估它们。如果省略 environment-specifier,则假定为 (interaction-environment)。未指定是否打印表达式的结果。加载过程不影响 current-input-port 和 current-output-port 返回的值。它返回一个未指定的值。理由:为了可移植性,加载必须对源文件进行操作。它对其他类型文件的操作必然因实现而异。
这两种形式的基本原理是什么?我认为这是历史性的。两种形式之间是否有任何导入语义差异?我看到load
可以选择包含环境说明符,include
但没有。并且include-ci
没有直接等价的 using load
。但是单独比较load
,include
有什么区别,重要吗?