Quindi, sto davvero friggendo il cervello cercando di capire la composizione di foldl.foldr. Ecco un esempio:pieghevole. composizione della funzione foldr - Haskell
(foldl.foldr) (+) 1 [[1,2,3],[4,5,6]]
Il risultato è 22, ma ciò che sta realmente accadendo qui?
Per me sembra che questo sia quello che sta accadendo: foldl (+) 1 [6,15]
. Il mio dubbio è relativo alla parte foldr
. Non dovrebbe aggiungere l'1 a tutte le sotto-liste? In questo modo: foldr (+) 1 [1,2,3]
. Nella mia testa l'1 è aggiunto solo una volta, giusto? (probabilmente no, ma voglio sapere come/perché!).
Sono molto confuso (e forse facendo tutta la confusione, ahah). Grazie!
Non credo che questa è la corretta sequenza di applicazioni, Daniel. '7' non sarà forzato fin dall'inizio, IMO. –
Sì, sarebbe - blocco delle ottimizzazioni - rimangono un tonfo fino a quando viene valutato il thunk risultante finale prodotta dal 'foldl'. Ma valutarlo prematuramente era meno da digitare e lo rende più leggibile. –