LISP - Funções de Mapeamento

Funções de mapeamento são um grupo de funções que podem ser aplicadas sucessivamente a uma ou mais listas de elementos. Os resultados da aplicação dessas funções a uma lista são colocados em uma nova lista e essa nova lista é retornada.

Por exemplo, o mapcar função processa elementos sucessivos de uma ou mais listas.

O primeiro argumento da função mapcar deve ser uma função e os argumentos restantes são as listas às quais a função é aplicada.

A função de argumento é aplicada aos elementos sucessivos que resultam em uma lista recém-construída. Se as listas de argumentos não forem iguais em comprimento, o processo de mapeamento será interrompido ao atingir o final da lista mais curta. A lista resultante terá o mesmo número de elementos que a lista de entrada mais curta.

Exemplo 1

Comecemos com um exemplo simples e adicionemos o número 1 a cada um dos elementos da lista (23 34 45 56 67 78 89).

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.

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

Quando você executa o código, ele retorna o seguinte resultado -

(24 35 46 57 68 79 90)

Exemplo 2

Vamos escrever uma função que cubra os elementos de uma lista. Vamos usar uma função lambda para calcular o cubo de números.

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.

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

Quando você executa o código, ele retorna o seguinte resultado -

(8 27 64 125 216 343 512 729)

Exemplo 3

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.

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

Quando você executa o código, ele retorna o seguinte resultado -

(3 7 11 15)