CLOSで名前の衝突に気を使うのがかったるい
たとえば、パッケージA,Bを別々に定義して、その中でそれぞれクラスA, Bを定義、
そのクラスをパッケージαで使う、とか考えた時に、

;; まずAを定義して
(defpackage :A (:use :cl) (:export :attr-of))

(in-package :A)

(defclass A () ((attr :reader attr-of)))

;; 次にBを定義
(defpackage :B (:use :cl) (:export :attr-of))

(in-package :B)

(defclass B () ((attr :reader attr-of)))

;; αで2つを一緒に使おうとすると、名前が衝突して落ちる
(defpackage :child-alpha (:use :cl :A :B))


A-attr, B-attr, とかいうアクセサはオブジェクト指向的じゃないから嫌だけど、
attr-ofにすると、先にアクセサ用パッケージでシンボルを用意するのもダルい。

いっそパッケージを、アクセサ、クラス、総称関数の3つだけにしたらいいのかね。
お前らはどうやってんの?