I tiene una funciónconfusión con respecto a la pereza
myLength = foldl (\ x _ -> x + 1) 0
que falla con desbordamiento de pila con la entrada de alrededor de 10^6 elementos (myLength [1..1000000] falla). Creo que eso se debe a la acumulación de thunk, ya que cuando reemplazo foldl con foldl ', funciona. Hasta ahora todo bien.
pero ahora tengo otra función de revertir una lista:
myReverse = foldl (\ acc x -> x : acc) []
que utiliza la versión foldl perezoso ( en lugar de foldl ')
Cuando hago myLength . myReverse $ [1..1000000]
. Esta vez funciona bien. No entiendo por qué foldl funciona para el caso posterior y no para el anterior.
Para aclarar aquí myLength utiliza foldl' mientras myReverse utiliza foldl
mi mal !! lo corrigió –
Obtengo una excepción de desbordamiento de pila para ambos casos. – dave4420
No, ese es solo el logotipo en la parte superior del sitio web que está viendo;) (No obtengo una excepción para myReverse) – Artelius