惯用的 Clojure 函数别名

Posted

技术标签:

【中文标题】惯用的 Clojure 函数别名【英文标题】:Idiomatic Clojure function alias 【发布时间】:2016-03-17 15:56:21 【问题描述】:

在 Clojure 中为函数起别名的最惯用方式是什么? 这两种方法在执行方面有什么区别吗?

示例取自Om(Clojurescript,但 Clojure 中的语法相同):

(defn query->ast
  "Given a query expression convert it into an AST."
  [query-expr]
  (parser/query->ast query-expr))

(def query->ast
  "Given a query expression convert it into an AST."
  parser/query->ast)

【问题讨论】:

第二种方法是惯用的答案。 【参考方案1】:

比起defn,我更喜欢def

defn 版本

有一个插入的函数调用,可以省略也可以不省略; 仅限于 arity 1,而 def 版本具有 原件。

【讨论】:

你可以在新的defn 中构建多参数,但这不值得麻烦;你的第一个理由就足够了。

以上是关于惯用的 Clojure 函数别名的主要内容,如果未能解决你的问题,请参考以下文章

从clojure中的普通lisp替换(null x)函数的惯用方法

Clojure 中的惯用错误处理

用于求解动态规划算法的惯用 Clojure

什么是惯用的clojure:使用

“foo = bar || baz”的惯用 Clojure 是啥?

clojure 中的惯用配置管理?