この例を考えてみましょう。
パッケージ「a」で定義されている「first」という名前のクラスがあります。
モジュール「a」機能を使用するパッケージ「b」もあります。パッケージ「b」の特定の関数は、パラメータとしてクラス「first」のオブジェクトを必要とします。ただし、これ以外に、パッケージ「a」と「b」の間に直接の論理リンクはありません。
(defmethod package-b-function ((param first)) #|do stuff..|#)
関数にはオブジェクトが必要であり、メソッドを定義すると、ランタイム環境とパッケージ'b'の他のユーザーの両方に対してこれが明確になるため、通常の関数の代わりに記述するのが合理的かどうか疑問に思います。
私は以前C++/ Javaでプログラミングしていたので、この場合に使用されるOOP規則に精通していません。
あなたの洞察に感謝します。