在Lisp中是否有一种方法可以包含其他Lisp文件的代码?
例如,在C++中我可以这样做:
#include <iostream>
#include <string>
#include "myfile.h"
etc...
Run Code Online (Sandbox Code Playgroud)
在Python中,
import antigravity
import my_module
etc...
Run Code Online (Sandbox Code Playgroud)
是否有Lisp等价物?
Rai*_*wig 17
使用LOAD和COMPILE-FILE等标准函数.
ANSI Common Lisp还具有REQUIRE函数.
如果您使用"系统"维护工具作为Common Lisp的扩展,那么您还可以加载或编译整个"系统"."系统"是文件和子系统的集合,其中定义了加载和编译等操作.
dan*_*lei 11
除了Rainer的回答:
如果要加载ASDF -systems,使用方法:
(asdf:load-system 'my-system)
Run Code Online (Sandbox Code Playgroud)
一些Lisp实现(例如CCL)也允许require用于加载ASDF系统,但该功能依赖于实现.如果您正在使用Slime,并希望以交互方式加载系统,则可以通过键入,l my-systemSlime REPL来执行此操作.
我想要指出的另一件事是,与Python不同,使用require或load在CL中与包没有任何关系(想想"命名空间").所以,如果你的代码加载或要求在自己的软件包的生活,你将不得不使用其出口资格的符号(foo:bar),或包括那些包在你的代码住在包((defpackage my-package (:use cl package-you-want-to-use ...) ...)).这不仅与Python不同import,而且与C预处理器不同#include,后者仅仅是文本内容.