Comporre l'esempio nell'ansi comune di Paul Graham Lisp
-
30-10-2019 - |
Domanda
Qualcuno può spiegare un esempio in Ansi Common Lisp Page 110 di Paul Graham?
L'esempio cerca di spiegare l'uso e il riposo e lambda per creare strutture di programmazione funzionali. Uno di questi è una funzione per comporre argomenti funzionali. Non riesco a trovare nulla che spieghi come ha funzionato. Il codice è il seguente:
(defun compose (&rest fns)
(destructuring-bind (fn1 . rest) (reverse fns)
#'(lambda (&rest args)
(reduce #'(lambda (v f) (funcall f v))
rest
:initial-value (apply fn1 args)))))
L'uso è:
(mapcar (compose #'list #'round #'sqrt)
'(4 9 16 25))
L'output è:
((2) (3) (4) (5))
La linea 2 e 6 mi assomigliano soprattutto a una magia. Eventuali commenti saranno apprezzati.
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow