Najwyraźniej nie można nazwać stosuje się konstruktora rekordu:Konstruktorzy rekordów Clojure nie są pierwszymi klasami?
(defrecord Foo. [id field])
(apply Foo. my-list)
nie w momencie odczytu, ponieważ nie spodziewa Foo. w tamtym miejscu.
Jedynym oczywiste obejście mogłem pomyśleć było dodać funkcję fabryczną:
(make-foo [id field] (Foo. id field))
które można apply'ed oczywiście.
Czy brakuje mi czegoś? Spodziewałbym się tego od C#/Java, ale pomyślałem, że było to trochę rozczarowujące w Clojure ...
zgadzają się, że jest trochę na osobliwość, ale osobiście nigdy nie było problemem, ponieważ uważam funkcje fabryczne raczej użyteczny - ten wzór obsługuje bardziej idiomatyczne użycie Clojure, zapewnia większą elastyczność w parametrach przetwarzania wstępnego, pozwala na różne zestawy konstruktorów do różnych celów, zapewnia warstwę abstrakcji itp. – mikera