正如您所知,有多种不同的 Lisp 系统。我将发布 Common Lisp 的答案。
天真的方法是使用(load "filename.lisp")
,但是一段时间后效果就不太好了。所以...
Common Lisp 有一个名为“ASDF”的库,用于处理打包和文件管理。 ASDF 有一些设置。
- 创建 ASDF 查找文件的目录。
- 将此信息添加到我的 Lisp 系统的 init 文件中。
我在我的.sbclrc
文件(假设我在 ~ 中创建了一个 .asdf 文件):
(pushnew "~/.asdf/" asdf:*central-registry* :test #'equal)
我通常使用之前构建的 ASDF 文件,然后对其进行修改。
以下是示例 ASDF 文件的内容:
(asdf:defsystem #:cl-linq
:depends-on ( #:alexandria #:anaphora)
:components ((:file "cl-linq"))
:name "cl-linq"
:version "0.1"
:maintainer "Paul Nathan"
:author "Paul Nathan"
:licence "LLGPL"
:description "CL LINQ style interface with strains of SQL"
:long-description
"DSL for managing and querying datasets in a SQL/LINQ style
syntax. cl-linq provides a simple and usable set of primitives to
make data examination straightforward. ")
我把这段代码放在一个文件中cl-linq.asd
在我的源代码旁边(cl-linq.lisp
从组件"cl-linq"
在 defsystem 中),然后符号链接cl-linq.asd
文件到我的~/.asdf/
目录。
在我的 cl-linq.lisp 文件中,我包含以下内容:
(defpackage :cl-linq
(:use
:common-lisp
:anaphora)
(:export
#:query
#:cl-linq-select))
(in-package :cl-linq)
所以对于你的情况,我有两个组件;每个包都有自己的 defpackage 形式,导出另一个包所需的函数。
对于示例,我从以下位置获取了代码CL-LINQ https://github.com/pnathan/cl-linq,我的一个项目。您可以非常自由地使用它作为模板。