A quanto pare, non è possibile chiamare applicare con un costruttore di record:Costruttori di record Clojure non di prima classe?
(defrecord Foo. [id field])
(apply Foo. my-list)
cede a tempo di lettura, perché non si aspetta Foo. in quel luogo.
L'unica soluzione ovvia mi veniva in mente era quella di aggiungere una funzione di fabbrica:
(make-foo [id field] (Foo. id field))
che può essere apply'ed naturalmente.
Mi manca qualcosa? Mi aspetterei questo da C#/Java ma ho pensato che fosse un po 'deludente in Clojure ...
d'accordo che è un po 'di una stranezza, ma personalmente non è mai stato un problema come trovo le funzioni factory piuttosto utile - questo modello supporta l'uso di Clojure più idiomatico, offre maggiore flessibilità nei parametri di pre-elaborazione, consente diversi insiemi di costruttori per scopi diversi, fornisce uno strato di astrazione, ecc. – mikera