Parcial 2016 - prueba 2 - ejercicios 3

Parcial 2016 - prueba 2 - ejercicios 3

de Sandra Paganini Fajardo -
Número de respuestas: 3

Hola, no estoy entendiendo porque este ejercicio su resultado es [0,1,2,3,4].

Se supone que el dropWhile (>0) iria borrando todos los elementos ya que todos son >0 (supongo que el 0 no lo borra) 


y si hago dropWhile (>0) [1,2,3,4] me da la lista vacia. 

y si take 5 del dropWhile no puedo tomar 5 elementos hasta que no encuentre algunos que no cumplan la condicion. 

Pero lo probe y funciona bien. Hay algo en mi razonamiento que no me doy cuenta donde esta mal. 

Gracias. 


mucho = take 5 ◦ dropWhile (>0) ◦ map (λf → f 0) $ iterate ((+1)◦) id  

En respuesta a Sandra Paganini Fajardo

Re: Parcial 2016 - prueba 2 - ejercicios 3

de Lucas Barenchi -

Buenas, el dropWhile (>0) primero prueba con el 0 y como ya no lo cumple termina el while, por eso termina ahí y el take 5 agarra esos.

Igualmente tengo unas dudas sobre la otra parte del ejercicio (que asumí, aunque sin entender), tal vez puedas ayudarme.

La función map (λf → f 0), qué se supone que hace? Porque 'f' no está definida, y tampoco entiendo la lógica para procesar la sentencia:  iterate ((+1)◦) id.


Espero se haya entendido lo del dropWhile, saludos.

En respuesta a Lucas Barenchi

Re: Parcial 2016 - prueba 2 - ejercicios 3

de Marcos Viera - InCo -

Si la lista es una lista de funciones, el map aplica cada función a 0.

(iterate ((+1) .) id)  genera la lista infinita con las funciones [id, (+1) . id, (+1) . (+1) . id, ...]