(apply map list '((a b c) (1 2 3))) => ((a 1) (b 2) (c 3))
Ich kann nicht wirklich meinen Kopf um diesen Ausdruck wickeln. Was passiert hier?Ich brauche Hilfe meinen Kopf um ein Schema Ausdruck
(apply map list '((a b c) (1 2 3))) => ((a 1) (b 2) (c 3))
Ich kann nicht wirklich meinen Kopf um diesen Ausdruck wickeln. Was passiert hier?Ich brauche Hilfe meinen Kopf um ein Schema Ausdruck
Das erste, was Sie verstehen müssen, ist, was map
tut. map
nimmt eine Funktion und eine oder mehrere Listen. map
ruft dann diese Funktion für das erste Element jeder Liste auf, und das wird der erste Wert in der Liste, die von map
zurückgegeben wird. map
wiederholt dies für das zweite Element in jeder Liste und so weiter, bis eine der Listen keine Elemente mehr enthält. Zum Beispiel:
(map + '(1 2 3) '(4 5 6)) => (5 7 9)
map
erste Anrufe +
auf dem ersten Argumente jeder Liste, 1 und 4, 5 als ersten Wert in der Ergebnisliste zu erhalten. Die anderen Werte werden auf die gleiche Weise berechnet.
apply
funktioniert, indem Sie eine Funktion, eine Reihe von Werten und eine Liste als letztes Argument nehmen. apply
erste anhängt alle seine Argumente neben der Funktion auf der Liste als letztes Argument übergeben, so dass:
(apply map list '((a b c) (1 2 3)))
(apply map (list list '(a b c) '(1 2 3)))
apply
wird dann die Funktion in die sie mit jedem Element des übergebenen Anrufe Liste als separates Argument, so dass die oben wird:
(map list '(a b c) '(1 2 3))
map
rufen list
auf das erste Argument jeder Liste und erhalten (a 1)
, die der erste Wert in der resultierenden Liste wird. Das gleiche passiert für den Rest der Listen.
apply
ist einfach als rein textliche Transformation des Codes zu handhaben, von
(apply map list '( (a b c) (1 2 3) ))
zu
( map list '(a b c) '(1 2 3) )
Bald wird merken Sie und denken Sie daran "apply-map-Liste" als ein berühmter Lisp-Idiom zum Transponieren einer 2D-List-of-Lists-Matrix. Ich habe Gerüchte gehört, dass Google, nicht zufrieden mit "map-reduce", plant, "apply-map-list" über seine Cluster zu verteilen, um das Internet auf sein Ohr zu richten. – Kaz