Valutazione lazy

Nella programmazione, la valutazione pigra o lazy è una tecnica che consiste nel ritardare una computazione finché il risultato non è richiesto effettivamente.

I benefici della valutazione pigra includono: aumento delle prestazioni per evitare calcoli non necessari, evitare condizioni di errore nella valutazione di espressioni composte, capacità di costruire strutture dati potenzialmente infinite, capacità di definire strutture di controllo come astrazioni invece che come primitive.

I linguaggi che effettuano una valutazione lazy possono essere ulteriormente suddivisi in linguaggi che utilizzano una strategia di valutazione call-by-name e quelli che utilizzano una strategia call-by-need. I linguaggi lazy più realistici, quali l'Haskell, utilizzano call-by-need per ragioni di prestazioni, mentre linguaggi più teorici fanno uso della strategia call-by-name per questioni di semplicità.

L'opposto della valutazione lazy è la valutazione eager, a volte nota come valutazione stretta (strict evaluation). La valutazione eager mira a determinare il valore di una computazione il prima possibile, anche se esso non è richiesto in quel momento. Questo è il comportamento tipico della maggior parte dei linguaggi di programmazione.