Haskell è una delle poche lingue non rigide in circolazione.
Nel suo articolo Perché argomenti di programmazione funzionale , John Hughes utilizza (memoized) valutazione pigra (così come le funzioni di ordine superiore) per implementare un paio di algoritmi piacevoli dove è in grado di separare:
- come vengono generati i dati.
- come potrebbero essere manipolati questi dati.
- in che modo i dati risultanti potrebbero essere consumati.
Mostra due esempi:
- Uso di un flusso infinito per generare approssimazioni sempre crescenti di valori numerici interessanti (come una radice quadrata, una derivata o un integrale)
- Utilizzo di un albero a più vie infinito per esplorare possibili posizioni future di una bacheca di gioco.
Nel mio lavoro in una vasta gamma di lingue, a volte ho visto anche l'uso della pigrizia, ma quasi sempre è stato in uno di questi due contesti: o un flusso lineare (finito o infinito) o un multi- way tree.
Ci sono altre strutture dati il cui consumo è vantaggioso se fatto in modo pigro?