gpt4 book ai didi

emacs - 在另一个 lisp 文件中调用函数

转载 作者:太空宇宙 更新时间:2023-11-03 18:56:20 27 4
gpt4 key购买 nike

我必须用 Lisp 编写游戏。为了清楚起见,我想将代码拆分到不同的 .lisp 文件中。

如何从另一个文件中的函数调用函数?

例如file1.lisp 有一个名为 function1 的函数,file2.lisp 有一个名为 function2 的函数。如何从 function1 中调用 function2?

谢谢!

最佳答案

如你所知,有多种不同的 Lisp 系统。我将发布 Common Lisp 的答案。

最朴素的方法是使用(load "filename.lisp"),但一段时间后效果并不好。因此……

Common Lisp 有一个名为“ASDF”的库,它处理打包和文件管理。 ASDF 有一些设置。

  1. 创建 ASDF 查找文件的目录。
  2. 将此信息添加到我的 Lisp 系统的初始化文件中。

我在我的 .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 文件符号链接(symbolic link)到我的 ~/.asdf/ 目录。

在我的 cl-linq.lisp 文件中,我包含了这个:

(defpackage :cl-linq
(:use
:common-lisp
:anaphora)
(:export
#:query
#:cl-linq-select))
(in-package :cl-linq)

所以对于你的情况,我有两个组成部分;每个都有自己的 defpackage 形式,导出其他包需要的功能。

对于示例,我从 CL-LINQ 中获取了代码,我的一个项目。您可以很自由地将其用作模板。

关于emacs - 在另一个 lisp 文件中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19731546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com