Vous utilisez apply
convertir une fonction qui fonctionne sur plusieurs arguments pour celui qui travaille sur une seule séquence d'arguments. Vous pouvez également insérer des arguments avant la séquence de. Par exemple, map
pouvez travailler sur plusieurs séquences. Cet exemple (à partir de ClojureDocs) utilise map
- transposition d'une matrice.
user=> (apply map vector [[:a :b] [:c :d]])
([:a :c] [:b :d])
L'on insère ici, l'argumentation est - vector
. Si l' apply
se développe pour
user=> (map vector [:a :b] [:c :d])
Mignon!
PS Pour retourner un vecteur de vecteurs au lieu d'une séquence de vecteurs, envelopper le tout dans vec
:
user=> (vec (apply map vector [[:a :b] [:c :d]]))
Alors que nous sommes ici, en vec
pourrait être défini comme (partial apply vector)
, si elle n'est pas.
Concernant Lisp-1 et Lisp-2: les 1 et 2 indiquent le nombre de choses qu'un nom peut désigner dans un contexte donné. Dans un Lisp-2, vous pouvez avoir deux choses différentes (une fonction et une variable du même nom. Ainsi, où que ce soit peut-être valable, vous avez besoin pour décorer votre programme avec quelque chose pour indiquer que vous voulez dire. Heureusement, Clojure (ou Régime ...) permet à un nom pour désigner une seule chose, donc pas de décors qui sont nécessaires.