Learn È un Haskell parla foldl'
come alternativa al foldl
perché foldl
è incline a impilare overflow.Domande su pieghe e overflow dello stack
- Secondo LYAH,
foldl (+) 0 (replicate 1000000 1)
deve sovrapporsi, ma non sulla mia macchina. Perché no? Anche se aumentassi quel numero a 10 milioni, non fuoriesce. Prende solo molta memoria fino a quando il mio computer OS X diventa inutilizzabile e devo riavviarlo. - In quali casi è necessario utilizzare
foldl
anzichéfoldl'
? Nella mia esperienzafoldl'
"funziona correttamente" mentrefoldl
può essenzialmente danneggiare il mio computer (vedi sopra). - Non capisco perché non ci sia nulla di simile per
foldr
. Perché lo stack dello stackfoldr
non può essere sovraccarico e perché non c'è lofoldr'
?
possibile duplicato di [Piegare a sinistra ea destra su un elenco infinito] (http://stackoverflow.com/questions/7396978/left-and-right-folding-over-an-infinite-list) –
Risposte al tuo secondo e le terze domande ti attendono su https://www.haskell.org/haskellwiki/Foldr_Foldl_Foldl ' – Jubobs
Il punto preciso in cui il tuo computer colpirà uno stackoverflow o esaurirà la memoria dipende dal tuo sistema operativo, quali altri programmi sei in esecuzione e il tuo hardware fisico. Un raspberry pi esaurirà la RAM prima del computer di rendering grafico (che potrebbe avere> 100 GB di RAM), ad esempio. Il tuo sistema operativo potrebbe anche utilizzare lo swap in un modo particolare per gestire i programmi che richiedono più memoria. – bheklilr