Pregunta 5 Auto evaluación - Definiciones

Pregunta 5 Auto evaluación - Definiciones

de Rodrigo Alain De La Vega Rodriguez -
Número de respuestas: 4

Buenas! No pude hacer ni probar este ejercicio. El ghci me da un error y no logro darme cuenta que es lo que hace que no compile.
Fuera de eso la respuesta que elegí para esta pregunta (adjunto imagen) fue ((:) . (*2)) pero no era correcta.
Al tratar de armar el foldl a mano no lo pude hacer, me entrevero en como aplicar las cosas.

Por ejemplo, si quiero ver si la opción ((*2) . (:)) es la correcta. Siguiendo el teórico, el foldl quedaría armado así:
( ( ( ([ ] ((*2) . (:)) 1) ((*2) . (:)) 2) ((*2) . (:)) 3) ((*2) . (:)) 4)
Esto no debería funcionar ya que lo primero que se ejecuta es: ((*2) . (:)) 1 que es igual a [ ] ((*2)( (:) 1)) y como el (:) necesita dos parámetros esto debería dar error.

Luego la opcion (*2) la descarto como correcta ya que me falta hacer el cons con la lista.

Y por ultimo si elijo la opcion f = (\xs x -> x *2 : xs) el flodl quedaría
( ( ( ([ ] f 1) f 2) f 3) f 4) y lo primero que se debería ejecutar seria [ ] f 1 pero al hacer esto no veo como f toma [ ] si esta a la izquierda.

Si pueden aclararme un poco un éxito.
Gracias!

e5

En respuesta a Rodrigo Alain De La Vega Rodriguez

Re: Pregunta 5 Auto evaluación - Definiciones

de Marcos Viera - InCo -
En realidad el foldl no te queda:
( ( ( ([ ] f 1) f 2) f 3) f 4)
sino que te queda:
( ( ( ([ ] `f` 1) `f` 2) `f` 3) `f` 4)
o lo que es equivalente:
( f ( f ( f (f [ ] 1) 2) 3) 4)
En respuesta a Marcos Viera - InCo

Re: Pregunta 5 Auto evaluación - Definiciones

de Rodrigo Alain De La Vega Rodriguez -
Marcos, buenas tardes. Reviviendo esto, te animas a explicarme como pasas de
( ( ( ([ ] `f` 1) `f` 2) `f` 3) `f` 4)
a esto
( f ( f ( f (f [ ] 1) 2) 3) 4)

O sea cada vez que escriba algo del estilo x 'mod' 2 seria igual a hacer (mod) x 2 ? Use mod por poner un ejemplo nomas.
Este tema de las comillas simples es algo que nunca me quedo muy claro.

Gracias!
En respuesta a Rodrigo Alain De La Vega Rodriguez

Re: Pregunta 5 Auto evaluación - Definiciones

de Marcos Viera - InCo -
Es como decís, las comillas invertidas te permiten utilizar una función prefija como un operador infijo.
Entonces hacer:
mod 4 2
es equivalente a hacer
4 `mod` 2

Quedó claro?