在公共lisp中,require和load之间有什么区别?

在公共lisp中,require和load之间有什么区别?,lisp,common-lisp,Lisp,Common Lisp,我正在学习实用的公共Lisp,我几乎完成了,有一个问题到目前为止我还没有回答(或者我只是错过了它),那就是“require”和“load”之间的区别 那么有什么区别呢 谢谢。require用于模块,每个模块可以由一个或多个文件组成 load用于加载任意单个文件 require功能测试 模块已存在(使用 区分大小写的比较);如果 模块不存在,需要 继续加载相应的文件 或一组文件。路径名 论点,如果存在,是一个单一的 路径名或路径名列表 文件按顺序装入,左 向右。如果路径名参数为 无或未提供,系统

我正在学习实用的公共Lisp,我几乎完成了,有一个问题到目前为止我还没有回答(或者我只是错过了它),那就是“require”和“load”之间的区别

那么有什么区别呢


谢谢。

require用于模块,每个模块可以由一个或多个文件组成

load
用于加载任意单个文件

require
功能测试 模块已存在(使用 区分大小写的比较);如果 模块不存在,需要 继续加载相应的文件 或一组文件。路径名 论点,如果存在,是一个单一的 路径名或路径名列表 文件按顺序装入,左 向右。如果路径名参数为 无或未提供,系统 将尝试在某些情况下确定 依赖于系统的方式,哪些文件 装载。这通常包括 一些模块名称的中央注册表 和关联的文件列表

资料来源:

load
函数加载名为的文件 将文件名导入Lisp环境。信息技术 假定一个文本(字符) 文件)可以自动 区别于对象(二进制) 通过适当的方式归档 依赖于实施的手段, 可能是由文件类型决定的。这个 文件名的默认值取自 变量 默认路径名默认值。如果文件名(在 默认值)未明确指定 类型,以及文本和对象类型 在文件中可以找到该文件的 系统,加载时应尝试选择 更合适的文件由一些 依赖于实现的手段


来源:

不同之处在于
(require)
在模块尚未加载时加载模块<代码>(加载)加载文件。

CLTL不是CL的好的主要参考;HyperSpec更好。请参阅或以获取指向正确位置的简短链接。对于阅读此问题及其答案的任何人:自ANSI标准化以来,Common Lisp中的require和整个模块系统都不推荐使用!。猜测一下:当我们在带有“require”的文件中使用“in-package”宏时,加载后它不会更改包吗?