Je suis un débutant Clojure. J'essaie d'obtenir deux copies d'un vecteur de combinaisons de cartes. La façon non DRY que je peux trouver estRépéter des vecteurs dans Clojure
(def suits [:clubs :diamonds :hearts :spades])
(def two-times (concat suits suits))
Il doit y avoir une façon plus fonctionnelle (même si cela prend plus de caractères :-)). Que faire si je veux N fois? Aucune suggestion?
Toutes les choses que j'essaie, comme
(replicate 2 suits)
résultats dans deux vecteurs séparés:
([:clubs :diamonds :hearts :spades] [:clubs :diamonds :hearts :spades])
Comment puis-je "Aplatir" la structure?
Il n'y a rien non fonctionnel sur l'utilisation de la valeur d'un Var à l'intérieur du 'def' création de formulaire un autre Var. En fait, c'est la chose naturelle à faire si le second Var dépend du premier. Bien sûr, si vous voulez une méthode générale de concaténer n copies d'un seq, où n peut ou peut ne pas être connu à l'avance, alors vous avez besoin d'une meilleure solution (que l'on trouve dans les réponses ici). –
En fait, c'est ce que je voulais dire (N copies). Je suis d'accord que ma fonction deux fois est "fonctionnelle" - ce n'est tout simplement pas pratique si je veux 100 exemplaires :-). – Ralph