Ejercicios de repaso Definiciones - duda foldr y foldl

Ejercicios de repaso Definiciones - duda foldr y foldl

de Maria Victoria Armand Ugon De Souza -
Número de respuestas: 3

Buenas!

tengo dudas con respecto a este ejercicio.

La letra es:

Dadas la siguiente definición: 

foo = foldl (.) (+2) [(+1),(*2),(+4)]

¿Cuál de las siguientes afirmaciones es correcta?

Seleccione una:

El resultado de evaluar (foo 10) es 28

foo no compila correctamente

El resultado de evaluar (foo 10) es 31

El resultado de evaluar (foo 10) es 33


Primera duda el (+2) si se le suma al parametro o al resultado.

Segunda duda es para mi la construccion del paso a paso del foldl seria:

foo 10 = ((10 'f' (+1) 'f' (*2))'f' (+4)), siendo f = (.)

 pero no me da nunca el resultado 33, ni sumando 2 en el parametro como en el resultado.

Que estoy haciendo mal?



En respuesta a Maria Victoria Armand Ugon De Souza

Re: Ejercicios de repaso Definiciones - duda foldr y foldl

de Agustina Arismendi Campo -

Hola!

Creo que viste mal la respuesta correcta.

Sería algo asi: (+2)(.)(+1)(.)(*2)(.)(+4)(10)


Dadas la siguiente definición: 

foo = foldl (.) (+2) [(+1),(*2),(+4)]

¿Cuál de las siguientes afirmaciones es correcta?

Seleccione una:
El resultado de evaluar (foo 10) es 28
El resultado de evaluar (foo 10) es 33
foo no compila correctamente
El resultado de evaluar (foo 10) es 31 Correcta


En respuesta a Agustina Arismendi Campo

Re: Ejercicios de repaso Definiciones - duda foldr y foldl

de Maria Victoria Armand Ugon De Souza -

Gracias Agustina por tu respuesta, igualmente no me quedo claro. No me da el numero que tu decir, porque para mi se suma primero el 1 y luego se multiplica por 2 y luego se le suma 4, entonces nunca puede dar impar.

Entonces quiero saber como seria el paso a paso que da ese numero.



En respuesta a Maria Victoria Armand Ugon De Souza

Re: Ejercicios de repaso Definiciones - duda foldr y foldl

de Marcos Viera - InCo -
La respuesta es 31, dado que `foo 10` equivale a
((((+2) . (+1)) . (*2)) . (+4)) 10


que es lo mismo que:
((+2) . (+1) . (*2). (+4)) 10


que dice que a 10 le sumo 4, luego lo multiplico por 2, luego sumo 1 y finalmente sumo 2.