常见的lisp中require和load有什么区别?

时间:2009-12-20 00:19:19

标签: lisp common-lisp

我正在通过Practical Common Lisp,我差不多完成了,到目前为止我还没有回答过一个问题(或者我只是错过了它)是“require”和“load”之间的区别。

那有什么区别?

感谢。

2 个答案:

答案 0 :(得分:9)

require用于模块,每个模块可以包含一个或多个文件。

load用于加载任意单个文件。

  

require函数测试是否a   模块已经存在(使用   区分大小写的比较);如果   模块不存在,要求   继续加载适当的文件   或一组文件。路径名   论证,如果存在,是单一的   路径名或路径名列表   文件将按顺序加载,左侧   对。如果pathname参数是   系统没有或没有提供   将在某些方面试图确定   依赖于系统的方式,哪些文件   载入。这通常涉及到   一些模块名称的中央注册表   和相关的文件列表。

来源:http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node119.html

  

load函数加载名为的文件   文件名进入Lisp环境。它   假定一个文本(字符   文件)可以自动   区别于对象(二进制)   文件由一些适当的   依赖于实现的手段,   可能由文件类型。该   文件名的默认值取自   变量   默认路径名-默认。如果文件名(在合并之后)   默认值)未明确指定   类型,文本和对象类型   该文件中的文件可用   系统,负载应尽量选择   一些更合适的文件   依赖于实现的手段。

来源:http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node217.html

答案 1 :(得分:2)

不同之处在于(require)加载模块(如果尚未加载); (load)加载文件。