LISP - Fonctions de mappage

Les fonctions de mappage sont un groupe de fonctions pouvant être appliquées successivement à une ou plusieurs listes d'éléments. Les résultats de l'application de ces fonctions à une liste sont placés dans une nouvelle liste et cette nouvelle liste est renvoyée.

Par exemple, le mapcar La fonction traite les éléments successifs d'une ou plusieurs listes.

Le premier argument de la fonction mapcar doit être une fonction et les arguments restants sont la ou les listes auxquelles la fonction est appliquée.

La fonction d'argument est appliquée aux éléments successifs qui aboutissent à une liste nouvellement construite. Si les listes d'arguments ne sont pas de longueur égale, alors le processus de mappage s'arrête à la fin de la liste la plus courte. La liste résultante aura le même nombre d'éléments que la liste d'entrée la plus courte.

Exemple 1

Commençons par un exemple simple et ajoutons le numéro 1 à chacun des éléments de la liste (23 34 45 56 67 78 89).

Créez un nouveau fichier de code source nommé main.lisp et tapez le code suivant dedans.

(write (mapcar '1+  '(23 34 45 56 67 78 89)))

Lorsque vous exécutez le code, il renvoie le résultat suivant -

(24 35 46 57 68 79 90)

Exemple 2

Écrivons une fonction qui cube les éléments d'une liste. Utilisons une fonction lambda pour calculer le cube des nombres.

Créez un nouveau fichier de code source nommé main.lisp et tapez le code suivant dedans.

(defun cubeMylist(lst)
   (mapcar #'(lambda(x) (* x x x)) lst)
)
(write (cubeMylist '(2 3 4 5 6 7 8 9)))

Lorsque vous exécutez le code, il renvoie le résultat suivant -

(8 27 64 125 216 343 512 729)

Exemple 3

Créez un nouveau fichier de code source nommé main.lisp et tapez le code suivant dedans.

(write (mapcar '+ '(1 3 5 7 9 11 13) '( 2 4 6 8)))

Lorsque vous exécutez le code, il renvoie le résultat suivant -

(3 7 11 15)