我下载了一个 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 系统。
那声音对吗?