我在一个命名空间中有一些私有函数,我想将它们包含在第二个命名空间中。例如
(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
命名空间的公共部分。
实现这一目标的最佳方法是什么?