我在一个命名空间中有一些私有函数,我想将它们包含在第二个命名空间中。例如
(ns one)
(defn ^:private foo
"A docstring"
[x] (* x 2))
第二个命名空间需要为此创建一个别名:
(ns two)
(def foo ???)
(foo 3) ;; should work as if the function in namespace one was called
=> 6
理想情况下,我想保留文档字符串,这样我就不必在两个地方维护它。此外,我希望可以选择使用相同的名称或不同的名称。
此要求的原因如下:在 namespace 中需要/使用该功能one。one是 的依赖项two,并且由于我们不能有循环依赖项,因此无法在其foo内部定义two。two是公共 API,因此foo需要成为two命名空间的公共部分。
实现这一目标的最佳方法是什么?