1つの名前空間にいくつかのプライベート関数があり、2番目の名前空間に含めたいと思います。例えば
(ns one)
(defn ^:private foo
"A docstring"
[x] (* x 2))
そして、2番目の名前空間はこれに対するエイリアスを作成する必要があります。
(ns two)
(def foo ???)
(foo 3) ;; should work as if the function in namespace one was called
=> 6
理想的には、docstringを保存したいので、2か所で維持する必要はありません。また、同じ名前を使用するか、別の名前を使用するかを選択できるようにしたいと思います。
この要件の理由は次のとおりです。機能は名前空間で必要/使用されますone
。one
はの依存関係でありtwo
、循環依存関係を持つことができないため、それ自体foo
の中で定義することはできませんtwo
。two
はパブリックAPIであるため、名前空間foo
のパブリックな部分である必要があります。two
これを達成するための最良の方法は何ですか?