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)