Un esempio per pigrizia causare problemi strani (che mi è successo oggi, in Haskell):
import System.IO
main = do
content <- readFile "foo.txt"
writeFile "foo.txt" content
Questo getta il seguente errore durante la compilazione & giustiziati:
foo.txt: openFile: resource busy (file is locked)
Quello che ho pensato che sarebbe do: Apri il file foo.txt, leggi il contenuto, chiudi di nuovo. Quindi aprilo per scrivere, scrivi il contenuto e chiudilo di nuovo.
Che cosa ha effettivamente fatto: "Ah, un po 'di contenuto, probabilmente lo leggerò più tardi quando ne avremo davvero bisogno." Quindi apri "foo.txt" per scrivere. Inizia a scrivere contenuti ... ok, ora abbiamo bisogno del contenuto. Apri foo.txt per la lettura - bam!
So che è semplice da risolvere, ma è difficile da trovare se non si sa dove guardare.
valutazione pigro è un modo per ottenere le prestazioni. – Zorf
errato. Se è necessario valutare la risposta, l'overhead aggiuntivo per la valutazione lazy crea un costo senza alcun beneficio. – vy32
vy32 è corretto. Ad esempio, se si dispone di un elenco di oggetti visualizzati in un elenco su un dispositivo mobile, la vista verrà creata nel momento in cui gli elementi dell'elenco vengono visualizzati sullo schermo. Se alcuni valori mostrati nell'elenco devono essere caricati in modo pigro, l'elenco risulterà rallentato perché i nuovi listi non possono essere riempiti abbastanza velocemente. – Janusz