Programmazione funzionale - Valutazione pigra

La valutazione pigra è una strategia di valutazione che mantiene la valutazione di un'espressione fino a quando non è necessario il suo valore. Evita valutazioni ripetute.Haskell è un buon esempio di un linguaggio di programmazione così funzionale i cui fondamenti sono basati sulla valutazione pigra.

La valutazione lazy viene utilizzata nelle funzioni di mappa Unix per migliorare le loro prestazioni caricando solo le pagine richieste dal disco. Nessuna memoria verrà allocata per le pagine rimanenti.

Valutazione pigra - Vantaggi

  • Consente al Language Runtime di eliminare le sottoespressioni che non sono direttamente collegate al risultato finale dell'espressione.

  • Riduce la complessità temporale di un algoritmo scartando i calcoli temporanei e le condizioni.

  • Consente al programmatore di accedere a componenti di strutture dati fuori ordine dopo l'inizializzazione, purché siano liberi da dipendenze circolari.

  • È più adatto per il caricamento di dati a cui si accede di rado.

Valutazione pigra - Svantaggi

  • Forza il language runtime a mantenere la valutazione delle sottoespressioni fino a quando non viene richiesto nel risultato finale creando thunks (oggetti ritardati).

  • A volte aumenta la complessità spaziale di un algoritmo.

  • È molto difficile trovare le prestazioni perché contiene thunk di espressioni prima della loro esecuzione.

Valutazione pigra usando Python

Il rangein Python segue il concetto di valutazione pigra. Risparmia il tempo di esecuzione per intervalli più grandi e non richiediamo mai tutti i valori contemporaneamente, quindi risparmia anche il consumo di memoria. Dai un'occhiata al seguente esempio.

r = range(10) 
print(r) 
range(0, 10) 
print(r[3])

Produrrà il seguente output:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
3