leggere la documentazione di apply
:
user=> (doc apply)
-------------------------
clojure.core/apply
([f args] [f x args] [f x y args] [f x y z args] [f a b c d & args])
Applies fn f to the argument list formed by prepending intervening arguments to args.
nil
Quindi, (apply map vector (vec jpgList))
corrisponde a f x args
, quindi sarà applicata alla funzione vector
, seguito dagli elementi di (vec jpgList)
map
. A differenza di Haskell, Clojure map
supporta più raccolte su cui operare. (vec jpgList)
è presumibilmente un vettore annidata, o elenco, come nel seguente esempio:
user=> (apply map vector [[1 2 3] [4 5 6]])
([1 4] [2 5] [3 6])
È successo, ogni elemento prodotto dalla map
è il vettore di ciascun elemento ennesimo degli elementi del vettore annidata. Questa funzione è nota anche come transpose
nelle operazioni con matrici.
fonte
2013-04-30 14:21:55