如何组织Common Lisp源代码,以便在库之间正确解析符号?

时间:2019-02-15 07:12:24

标签: common-lisp asdf

假设我们有以下先决条件:

(quickproject:make-project "lib1")
(quickproject:make-project "lib2")

;;;; Modify lib1/package.lisp like that:                                                                                                                                                            
(defpackage #:lib1
  (:use #:cl)
  (:export #:symbol1))

;;;; Modify lib2/package.lisp like that:                                                                                                                                                            
(defpackage #:lib1
  (:use #:cl)
  (:export #:symbol2))

(quickproject:make-project "project1")


;;;; Edit the project1's asdf:defsystem so that it has the following dependencies:
:depends-on (:lib1 :lib2)

加载project1并检查lib1软件包,您会注意到其中同时包含symbol1和symbol2

含义:

  • 不同的依赖项可能污染其他依赖项的程序包
  • 更糟-一个依赖项可以重新定义另一个依赖项的符号定义并破坏系统。

我可以通过采用像Java中使用的那样的包命名约定(带有长定界名称)来解决当前的问题。但是,这似乎是一个应该作为社区解决的问题。我们需要适用于所有CL库的通用解决方案。那会是什么?

0 个答案:

没有答案