LISP - Funciones de mapeo

Las funciones de mapeo son un grupo de funciones que pueden aplicarse sucesivamente a una o más listas de elementos. Los resultados de aplicar estas funciones a una lista se colocan en una nueva lista y esa nueva lista se devuelve.

Por ejemplo, el mapcar La función procesa elementos sucesivos de una o más listas.

El primer argumento de la función mapcar debe ser una función y los argumentos restantes son la lista o listas a las que se aplica la función.

La función argumento se aplica a los elementos sucesivos que dan como resultado una lista recién construida. Si las listas de argumentos no tienen la misma longitud, el proceso de mapeo se detiene al llegar al final de la lista más corta. La lista resultante tendrá el mismo número de elementos que la lista de entrada más corta.

Ejemplo 1

Comencemos con un ejemplo simple y agreguemos el número 1 a cada uno de los elementos de la lista (23 34 45 56 67 78 89).

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

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

Cuando ejecuta el código, devuelve el siguiente resultado:

(24 35 46 57 68 79 90)

Ejemplo 2

Escribamos una función que cubra los elementos de una lista. Usemos una función lambda para calcular el cubo de números.

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

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

Cuando ejecuta el código, devuelve el siguiente resultado:

(8 27 64 125 216 343 512 729)

Ejemplo 3

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

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

Cuando ejecuta el código, devuelve el siguiente resultado:

(3 7 11 15)