在Lisp中有没有办法包含来自其他Lisp文件的代码?
例如,在C++中,我可以这样做:
#include <iostream>
#include <string>
#include "myfile.h"
etc...在Python中,
import antigravity
import my_module
etc...有没有Lisp的等价物?
发布于 2011-03-27 13:11:17
除了Rainer的回答之外:
如果要加载ASDF-systems,请使用:
(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-you-want-to-use ...) ...))中。这不仅不同于Python import,而且也不同于C预处理器#include,后者仅仅是文本包含。
发布于 2011-03-27 12:32:51
使用标准函数,如LOAD和COMPILE-FILE。
ANSI Common Lisp还有一个函数REQUIRE。
如果您使用as“系统”维护工具作为Common Lisp的扩展,那么您还可以加载或编译整个“系统”。“system”是文件和子系统的集合,为这些文件和子系统定义了加载和编译等操作。
https://stackoverflow.com/questions/5447071
复制相似问题