map
Funkcja map w Scheme służy do stosowania procedury do każdego elementu listy (lub wielu list) i zwracania nowej listy zawierającej wyniki. Idealna do transformacji danych.
Najprostsza postać map wygląda tak:
(map procedure list)- Procedura: Funkcja stosowana do każdego elementu listy.
- Lista: Lista, której elementy zostaną przekształcone.
Przykład: podwojenie każdego elementu
(define (double x)
(* x 2))
(map double (list 1 2 3 4))- Tutaj funkcja
doublejest stosowana do każdego elementu listy(1 2 3 4). - Wynikiem jest nowa lista z podwojonymi elementami.
Wynik: (2 4 6 8)
Jak to działa
Tworzy nową listę:
mapstosuje podaną procedurę do każdego elementu listy i zbiera wyniki w nowej liście.
Transformuje dane:
- Służy głównie do transformacji danych, a nie do wykonywania efektów ubocznych.
Przykład: z wieloma listami
Gdy podane są wiele list, map przetwarza odpowiadające sobie elementy z każdej listy.
(define (sum x y)
(+ x y))
(map sum (list 1 2 3) (list 4 5 6))- Funkcja
sumdodaje odpowiadające sobie elementy z dwóch list i zwraca wyniki jako nową listę.
Wynik: (5 7 9)
Podsumowanie
- Funkcja
mapto potężne narzędzie do transformacji list poprzez stosowanie procedury do każdego elementu. - W przeciwieństwie do
for-each,maptworzy nową listę z wynikami zastosowanej procedury. - Obsługuje wiele list, umożliwiając operacje element po elemencie między nimi.
Dzięki map można efektywnie tworzyć przekształcone wersje danych, pozostawiając oryginalne listy niezmienione.