Without Map/Filter

**Programmazione senza l’utilizzo di map e filter**

La programmazione è un campo vasto e in continua evoluzione in cui scopriamo sempre nuovi approcci e strumenti per risolvere i problemi in modo più efficiente. Due funzioni molto utilizzate in ambito di programmazione funzionale sono map e filter, che ci permettono rispettivamente di trasformare gli elementi di una lista e di filtrarli in base a determinate condizioni. Tuttavia, è interessante esplorare come affrontare queste operazioni senza l’utilizzo di tali funzioni.

**Iterazione e manipolazione diretta delle liste**

Un approccio alternativo consiste nell’iterare direttamente sugli elementi della lista e manipolarli in base alle nostre esigenze. In questo modo, possiamo sostituire l’uso di map per applicare una trasformazione agli elementi, eseguendo un ciclo su ciascuno di essi e modificandoli di conseguenza.

Ad esempio, anziché utilizzare map per trasformare una lista di numeri interi moltiplicandoli per 2, possiamo scrivere un ciclo che scorre gli elementi della lista e raddoppia ciascun numero. In questo modo, otteniamo lo stesso risultato senza ricorrere alla funzione map.

**Implementazione delle funzionalità di filter**

Analogamente, per replicare il comportamento della funzione filter possiamo iterare sugli elementi della lista e verificare manualmente le condizioni che vogliamo applicare per filtrarli. In questo modo, possiamo creare una nuova lista contenente solo gli elementi che soddisfano determinate condizioni, senza utilizzare esplicitamente la funzione filter.

Un esempio pratico potrebbe essere la selezione solo dei numeri pari da una lista di numeri interi. Iterando sugli elementi della lista, possiamo controllare se ciascun numero è divisibile per due e, in caso positivo, aggiungerlo alla lista filtrata dei numeri pari.

**Conclusioni**

In conclusione, sebbene map e filter siano funzioni molto utili per semplificare e rendere più leggibile il nostro codice, è possibile affrontare le stesse operazioni senza la loro utilizzazione. Attraverso l’iterazione diretta sugli elementi di una lista e la manipolazione manuale di essi, possiamo replicare il comportamento di queste funzioni in modo personalizzato e adattato alle nostre esigenze specifiche. Questo ci consente di approfondire la comprensione dei meccanismi sottostanti e di ampliare le nostre capacità di programmazione funzionale.