File Lisp导入/加载文件
在Lisp中是否有一种方法可以包含来自其他Lisp文件的代码 例如,在C++中,我可以这样做:File Lisp导入/加载文件,file,import,lisp,File,Import,Lisp,在Lisp中是否有一种方法可以包含来自其他Lisp文件的代码 例如,在C++中,我可以这样做: #include <iostream> #include <string> #include "myfile.h" etc... 是否有Lisp等价物?使用标准函数,如和 ANSI Common Lisp还有一个函数REQUIRE 如果将“系统”维护工具用作Common Lisp的扩展,则还可以加载或编译整个“系统”。“系统”是指文件和子系统的集合,其中定义了加载和编译等操作
#include <iostream>
#include <string>
#include "myfile.h"
etc...
是否有Lisp等价物?使用标准函数,如和 ANSI Common Lisp还有一个函数REQUIRE
如果将“系统”维护工具用作Common Lisp的扩展,则还可以加载或编译整个“系统”。“系统”是指文件和子系统的集合,其中定义了加载和编译等操作。除了Rainer的答案外: 如果要加载-系统,请使用:
(asdf:load-system 'my-system)
一些Lisp实现(例如CCL)也允许使用require
加载ASDF系统,但该功能依赖于实现。如果您正在使用Slime,并且希望以交互方式加载系统,可以在Slime REPL处键入,l my system
我想指出的另一件事是,与Python不同,在CL中使用require
或load
与包没有任何关系(想想“名称空间”)。因此,如果您正在加载或需要的代码存在于其自己的包中,则必须使用其导出的合格符号(foo:bar
),或者将这些包包含在您的代码所在的包中((defpackage my package(:use cl package your want use…)
)。这不仅不同于Pythonimport
s,也不同于C预处理器#include
s,后者仅仅是文本包含。旧问题,但+1表示“导入反重力”
(asdf:load-system 'my-system)