2015-12-11 5 views
4

Какой был бы самый идиоматический способ псевдонима функции в Clojure? И есть ли разница в сроках исполнения между этими двумя подходами?Идиоматический псевдоним функции 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) 
+2

Второй подход - это идиоматический ответ. – WolfeFan

ответ

7

Я предпочитаю, чтобы defdefn.

defn версия

  • имеет вызов вставленной функции, которые могут или не могут быть опущены;
  • ограничен arity 1, тогда как версия def имеет все артерии оригинала.
+1

Вы можете создать многозначность в новом 'defn', но это не стоит проблем; вашей первой причины достаточно причины. – Mars

Смежные вопросы