Soy un novato en Clojure. Estoy tratando de obtener dos copias de un vector de cartas. La forma no DRY que puedo llegar a esRepetición de vectores en Clojure
(def suits [:clubs :diamonds :hearts :spades])
(def two-times (concat suits suits))
Tiene que haber una manera más funcional (incluso si se necesita más caracteres :-)). ¿Qué pasa si quiero N veces? ¿Alguna sugerencia?
Todas las cosas que trato, como
(replicate 2 suits)
resultados en dos vectores separados:
([:clubs :diamonds :hearts :spades] [:clubs :diamonds :hearts :spades])
¿Cómo "aplanar" la estructura?
No hay nada no funcional sobre el uso del valor de uno Var en el interior del 'def' forma de creación otro Var. De hecho, eso es lo que hay que hacer si el segundo Var depende de la primera. Por supuesto, si quiere un método general para concatenar n copias de un seq, donde n puede o no conocerse de antemano, entonces necesita una solución mejor (como se encuentra en las respuestas aquí). –
En realidad, eso es lo que quise decir (N copias). Estoy de acuerdo en que mi función dos veces es "funcional", simplemente no es práctico si quiero 100 copias :-). – Ralph