LISP - Funzioni di mappatura
Le funzioni di mappatura sono un gruppo di funzioni che possono essere applicate successivamente a uno o più elenchi di elementi. I risultati dell'applicazione di queste funzioni a un elenco vengono inseriti in un nuovo elenco e viene restituito quel nuovo elenco.
Ad esempio, il file mapcar la funzione elabora gli elementi successivi di uno o più elenchi.
Il primo argomento della funzione mapcar dovrebbe essere una funzione e gli argomenti rimanenti sono gli elenchi a cui viene applicata la funzione.
La funzione argomento viene applicata agli elementi successivi che risulta in un elenco di nuova costruzione. Se gli elenchi di argomenti non sono uguali in lunghezza, il processo di mappatura si interrompe al raggiungimento della fine dell'elenco più breve. L'elenco risultante avrà lo stesso numero di elementi dell'elenco di input più breve.
Esempio 1
Cominciamo con un semplice esempio e aggiungiamo il numero 1 a ciascuno degli elementi della lista (23 34 45 56 67 78 89).
Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.
(write (mapcar '1+ '(23 34 45 56 67 78 89)))
Quando esegui il codice, restituisce il seguente risultato:
(24 35 46 57 68 79 90)
Esempio 2
Scriviamo una funzione che cubi gli elementi di una lista. Usiamo una funzione lambda per calcolare il cubo dei numeri.
Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.
(defun cubeMylist(lst)
(mapcar #'(lambda(x) (* x x x)) lst)
)
(write (cubeMylist '(2 3 4 5 6 7 8 9)))
Quando esegui il codice, restituisce il seguente risultato:
(8 27 64 125 216 343 512 729)
Esempio 3
Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.
(write (mapcar '+ '(1 3 5 7 9 11 13) '( 2 4 6 8)))
Quando esegui il codice, restituisce il seguente risultato:
(3 7 11 15)