我有时发现在 Clojure 中定义返回部分函数的简化的 arity 版本的函数很方便,例如
(defn prefix
([pre string]
(str pre ":" string))
([pre]
(fn [string]
(prefix pre string))))
这意味着您可以执行以下任一操作:
(prefix "foo" 78979)
=> "foo:78979"
((prefix "foo") 78979)
=> "foo:78979"
这看起来很像 Haskell 并且避免了partial
创建部分函数的需要。
但它是否被认为是 Lisp 中良好的编码风格/API 设计?