1

我下载了一个 lisp 源 CC3.lisp 开始于

(if (not (find-package "CC3"))
    (defpackage "CC3"))
(in-package "CC3")

(export '(true false bogus rd sunday monday tuesday wednesday)) 

和别的。

我想写一个 test.lisp 来测试它的计算。

有人可能会说 ASDF,但作为一个新手,只想使用一个 lisp 文件,这似乎有点过头了,更不用说我发现与负载、包、系统、模块、ASDF、quick-lisp 的关系势不可挡。

任何提示如何编写一些脚本来让我开始。我怀疑它会涉及

  • 加载文件
  • (包装内...)

等等

但是,如果 ASDF/Quick-Lisp 是唯一的出路,也请告诉我。

谢谢。

=== 我设法在 CCL (mac os x) 下破解了这样的 asdf 工作流程:

将源文件放入 asdf 目录:

(require 'asdf)

;;; but no central-registry

(setf asdf:*central-registry*
   ;; Default directories, usually just the ``current directory''
  '(*default-pathname-defaults*
   ;; Additional places where ASDF can find
   ;; system definition files
   #p"/Users/.../CC3-asdf/"
   #p"/usr/share/common-lisp/systems/"))

然后似乎只需要运行一次

我需要这个(但即使使用 .asd 也不知道这与 asdf 有什么关系;只需将其用作 lisp 文件并在 CCL 编辑器下执行所有操作)。

天文.asd

(defpackage #:astro-asd
  (:use :cl :asdf))

(in-package :astro-asd)

(defsystem astro
  :name "astro"
  :serial t ;; the dependencies are linear.
  :components ((:file "cc3.0.cl-loadpackage")
               (:file "cc3.0.cl")
               (:file "cc3.0.cl-testing")))

在 CCL 编辑器下将上述文件作为 lisp 执行后(全部执行)然后

在 CCL Listener 下执行此命令

(asdf:operate 'asdf:load-op 'astro)

在此之后,我可以执行一个使用这样的包的文件(在从命令行启动 Lisp 程序时如何指定包名?),但真的不知道这一切是如何工作的。

cc3-testing.lisp:

cc3::ujjain
(cc3::hindu-sine-table 12)
(format T "sunset ~a~%" (CC3::sunset (CC3::fixed-from-gregorian (CC3::gregorian-date 1996 CC3::february 25)) CC3::jerusalem))
;;; (use-package "CC3") not working ... conflict ... 
(in-package "CC3") ;;; work
(format T "~a~%" (sunset (fixed-from-gregorian (gregorian-date 1996 february 25)) jerusalem))

该目录现在有

--astro-asdf
  --- astro-load-central-registory.lisp
  --- astro.asd
  --- cc3-... other lisp.
  --- cc3-testing.lisp

我每次都必须加载 astro.ad,然后执行 asdf 命令。然后我使用 cc3-testing.lisp 来测试 cc3 系统。

那声音对吗?

4

1 回答 1

1

这看起来像是 ASDF2 之前的旧建议。

1- 对于 CLISP 的可移植性,使用(需要“asdf”),而不是(需要“asdf”)。

2-无需条件化你的defpackage。

3-无需在您的 .asd 文件中进行 defpackage 和 in-package。

4- 调用您的文件 package.lisp、cc3.lisp、test.lisp 和您的组件“package”、“cc3”、“test”。

5-将测试移动到它自己的(defsystem“cc3/test”:depends-on(“cc3”):components(:file“test”))

于 2015-04-19T18:42:02.913 回答