2.7.4. Funktionsapplikation
Um eine Funktion auf Argumente anzuwenden, gibt es die allgemeinen Formen funcall
und apply
. Bei funcall
werden die Argumente wie bei einem Funktionsaufruf auf derselben Listenebene, in der das funcall
steht, übergeben. bei apply
werden die Funktionsargumente als Liste übergeben.
Es sollte ergänzt werden, dass die ersten Funktionsargumente bei apply
wie bei funcall
auch einzeln übergeben werden können, allerdings muss das letzte übergebene Argument im Unterschied zu funcall
eine Liste sein:
;;; Aufruf einer Funktion mit funcall: (funcall #'+ 3 4 5) ;; -> 12 ;;; Das Gleiche als Applikation einer Funktion auf eine Liste von ;;; Argumenten: (apply #'+ '(3 4 5)) ;; -> 12 ;;; dieser Ausdruck ist äquivalent mit allen folgenden Ausdrücken: (apply #'+ 3 '(4 5)) ;; -> 12 (apply #'+ 3 4 '(5)) ;; -> 12 (apply #'+ 3 4 5 '()) ;; -> 12