Buenas! Al tratar de responder esta pregunta (Adjunto imagen por las dudas) me paso lo siguiente:
La letra pedía el resultado de foo 3 [1,2,4,5,3,3]
Para resolverlo fui escribiendo el paso a paso del foldl con el fun de la siguiente forma:
1) fun (Nothing,0) 1 => Resultado: (Nothing,1)
2) fun (Nothing,1) 2 => Resultado: (Nothing,2)
3) fun (Nothing,2) 4 => Resultado: (Nothing,3)
4) fun (Nothing,3) 5 => Resultado: (Nothing,4)
5) fun (Nothing,4) 3 => Resultado: (Just 4,5)
6) fun (Just 4, 5) 3 => Resultado: (Just 4, 5)
Luego se aplica el fst y llego a la conclusión que el resultado es (Just 4)
La pregunta es:
Cuando estoy en el paso 5 y voy a "ejecutar" el 6 me confunde la definición de fun ya que el x que recibe el Just me parecía que es el x que se le pasa foo. No debería ser: fun (Just x', i) _ = bla bla....? O sea un x' en vez de x?
Cuando el foldl en el paso 5 hace que el paso 6 quede fun (Just 4,5) 3 es ahí donde me confunde la x que se le pasa a foo originalmente.
Sino se entiende trato de explicarme mejor.
Gracias!