0

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

(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 库的通用解决方案。那会是什么?

4

0 回答 0