В swannodettes clojurescript учебника (https://github.com/swannodette/lt-cljs-tutorial/blob/master/lt-cljs-tutorial.cljs), он утверждал, что:Зачем определять заводскую функцию для записей?
Это считается идиоматическим (и рекомендуется), чтобы определить функцию фабрики, которая возвращает созданный экземпляр defrecord/deftype. Идиоматично использовать тире для названий фабрик.
В примере:
(defn person [first last]
(->Person first last))
Почему?
Единственное, что я могу думать, если вы используете один набор параметров и они не соответствуют реализации, либо как преобразование:
(defn person [full-name]
(->Person (first (split full-name)) ...))
Или охранником против изменения осуществления когда используется как библиотека.
Это он?
Недостатки были бы лишними, ненужными функциями, которые должны быть обновлены в параллели с реализациями и, возможно, немного более нечеткими именами.
Мне не нравится шаблонный код, поэтому я всегда разочарован, когда даю такие рекомендации без объяснений.
http://stuartsierra.com/2015/05/17/clojure-record-constructors – ClojureMostly