【问题标题】:Lisp importing/loading fileLisp 导入/加载文件
【发布时间】:2011-07-23 18:07:50
【问题描述】:

在 Lisp 中有没有办法包含来自其他 Lisp 文件的代码?

例如,在 C++ 中我可以这样做:

#include <iostream>
#include <string>
#include "myfile.h"
etc...

在 Python 中,

import antigravity
import my_module
etc...

是否有 Lisp 等价物?

【问题讨论】:

  • 老问题,但为“import antigravity”+1

标签: file import lisp


【解决方案1】:

除了Rainer的回答:

如果要加载ASDF-systems,请使用:

(asdf:load-system 'my-system)

一些 Lisp 实现(例如 CCL)还允许使用 require 加载 ASDF 系统,但该功能取决于实现。如果您正在使用 Slime,并希望以交互方式加载系统,您可以通过在 Slime REPL 中键入 ,l my-system 来实现。

我想指出的另一件事是,与 Python 不同,在 CL 中使用 requireload 与包没有任何关系(想想“命名空间”)。因此,如果您正在加载或需要的代码位于其自己的包中,您将不得不使用其导出的符号限定 (foo:bar),或者将这些包包含在您的代码所在的包中 ((defpackage my-package (:use cl package-you-want-to-use ...) ...))。这不仅与 Python imports 不同,而且与 C 预处理器 #includes 不同,后者只是文本包含。

【讨论】:

    【解决方案2】:

    使用LOADCOMPILE-FILE 等标准函数。

    ANSI Common Lisp 还有一个函数 REQUIRE。

    如果您将“系统”维护工具用作 Common Lisp 的扩展,那么您还可以加载或编译整个“系统”。 “系统”是定义了加载和编译等操作的文件和子系统的集合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 2011-11-02
      相关资源
      最近更新 更多