Prueba 2022 - Ej10

Prueba 2022 - Ej10

de Santiago Agustín Silveira Pérez -
Número de respuestas: 1

Hola. 

El ejercicio 10 de esta prueba pide:

Implemente, sin usar recursión, el operador ($>) :: [a → b ] → a → [b ] que aplica un argumento dado a cada función de una lista. Por ejemplo, [(+5),(∗2),(∗0)]$>8 devuelve la lista [13, 16, 0].

A mi se me ocurrió la siguiente solución pero es diferente a la que se propone en la letra. Quisiera saber si es correcta y si cumple con lo de "sin usar recursión".

(f:fs) $> arg = f arg : fs $> arg


En respuesta a Santiago Agustín Silveira Pérez

Re: Prueba 2022 - Ej10

de Alberto Pardo -
Hola,

El problema de tu solución es que es una definición recursiva. Fijate que en la definición estás llamando recursivamente a (fs $> arg).

Lo que queremos decir con "sin usar recursión" es que no den una definición por "recursión explícita", sino que la den en términos de alguna operación de listas (la cual ella si puede ser recursiva) del estilo de map, filter, foldr, take, drop, etc. En este caso lo sencillo era usar map: fs $> x = map ($ x) fs.

Saludos,
Alberto.