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