作为一个副项目,我正在创建一个关于图像合成的Clojure DSL (clisk)。
在我的DSL中,我有许多与Clojure核心函数相似的函数,例如+
函数或类似的函数,用于将图像进行加法合成 / 进行向量数学运算。
就我所见,有几个选择:
- 在我的命名空间中使用相同的名称(
+
)。在DSL代码中看起来不错,但会覆盖clojure.core版本,可能会引起问题。人们可能会感到困惑。 - 使用相同的名称,但要求限定作用域(
my-ns/+
)。避免冲突,但阻止人们方便地使用命名空间,看起来有点丑陋。 - 使用不同的简短名称,例如(
v+
)。可以方便地使用和避免冲突,但名称有点丑陋,可能难以记住。 - 使用不同的长名称,例如(
vector-add
)。冗长但描述性强,无冲突。 - 排除
clojure.core/+
并使用多方法重新定义+
(如georgek建议的那样)。
示例代码可能如下所示:
(show (v+ [0.9 0.6 0.3]
(dot [0.2 0.2 0]
(vgradient (vseamless 1.0 plasma) ))))
什么是最好/最惯用的方法?