我正在通过Practical Common Lisp,我差不多完成了,到目前为止我还没有回答过的一个问题(或者我只是错过了它)是"require"和"load"之间的区别.
那么区别是什么呢?
谢谢.
require 用于模块,每个模块可以包含一个或多个文件.
load 用于加载任意单个文件.
该
require函数测试模块是否已存在(使用区分大小写的比较); 如果模块不存在,则需要继续加载相应的文件或文件集.pathname参数(如果存在)是单个路径名或路径名列表,其文件将按从左到右的顺序加载.如果pathname参数为nil或未提供,则系统将尝试以某种系统相关的方式确定要加载的文件.这通常涉及模块名称和相关文件列表的一些中央注册表.
资料来源:http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node119.html
该
load函数将filename命名的文件加载到Lisp环境中.假设文本(字符文件)可以通过一些适当的依赖于实现的装置(可能通过文件类型)自动地与对象(二进制)文件区分开.filename的默认值取自变量 default-pathname-defaults.如果文件名(在默认值合并之后)没有明确指定类型,并且文件的文本和对象类型都在文件系统中可用,则加载应尝试通过某些依赖于实现的方式选择更合适的文件.
资料来源:http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node217.html