Ejercicios de repaso - Definiciones

Ejercicios de repaso - Definiciones

de Agustina Arismendi Campo -
Número de respuestas: 5

Buenas tardes, Si no es molestia podrían explicarme el paso a paso de la resolución de este ejercicio?


No logro entender como llega a la respuesta: qux f \equiv flip $ foldl (\r x -> f x : r)


Desde ya, muchas gracias


En respuesta a Agustina Arismendi Campo

Re: Ejercicios de repaso - Definiciones

de Marcos Viera - InCo -
Hola, nos podés pasar la letra del ejercicio?
En respuesta a Marcos Viera - InCo

Re: Ejercicios de repaso - Definiciones

de Agustina Arismendi Campo -

Perdón, adjunté una imágen y no quedó visible.


Va la letra: 

Dada la siguiente definición:

qux f []     ys = ys
qux f (x:xs) ys = qux f xs (f x : ys)

¿Cual de las siguientes afirmaciones es correcta?

Seleccione una:
qux f \equiv flip $ foldl (\r x -> f x : r)
qux f \equiv foldr (\x r -> f x : r)
qux f \equiv flip $ foldr (\x r -> f x : r)
qux f \equiv foldl (\r x -> f x : r)

Gracias, Saludos

En respuesta a Agustina Arismendi Campo

Re: Ejercicios de repaso - Definiciones

de Marcos Viera - InCo -
Podés descartar los que no usan `flip` porque los folds reciben, además de la función, primero el valor para el paso base y luego la lista sobre la cual realizar la recursión. Si mirás la definición de `quux`, lo hace al revés.
Luego, lo que hace `quux` es ir acumulando en uno de sus argumentos el el resultado de agregar a la lista acumulada la aplicación de `f` al elemento de la lista. Eso es exactamente lo que hace `foldl` con la función que se le pasa en esa opción.
En respuesta a Marcos Viera - InCo

Re: Ejercicios de repaso - Definiciones

de Agustina Arismendi Campo -

Hola Marcos, gracias por tu respuesta.


Me queda la siguiente duda: 

Quien se corresponde con los parámetros: función, valor para el paso base y lista sobre la cual realizar la recursión

en el foldl de la solución: qux f \equiv flip $ foldl (\r x -> f x : r)?? 

En respuesta a Agustina Arismendi Campo

Re: Ejercicios de repaso - Definiciones

de Marcos Viera - InCo -

La función es:

(\r x -> f x : r)

el valor para el paso base es el siguiente parámetro que le pases a qux y la lista el siguiente. Recordá que esa definición de qux se equivale a:

qux f e xs = flip $ foldl (\r x -> f x : r) e xs