Es divertido y fácil.
El hecho de que estés haciendo “bucles todo el tiempo” hace que los bucles sean un candidato perfecto para la abstracción. Resúmalos y nunca escribas explícitamente otro ciclo. Las clases de tipos Functor y Monad proporcionarían las interfaces comunes que necesita. Por ejemplo, Functor define una función llamada fmap, que le permite aplicar una función f a cada elemento de un contenedor:
fmap :: Functor f => (a -> b) -> fa -> fb
fmap (* 2) [1,2,3] == [2,4,6]
- ¿Qué es un lago de datos en el contexto de big data?
- ¿Un disco duro completo normalmente contiene alrededor del 50% de unos y 50% de ceros?
- Tengo un programa en el que los datos se generan muy rápido, ¿cómo inserto los datos en una base de datos?
- ¿Cómo evaluaría la calidad de los datos y cómo se pueden mejorar?
- ¿Cuáles son algunas bases de datos meteorológicas históricas?
Son posibles otros llamados esquemas de recursión. Por ejemplo, podríamos querer agregar todos los elementos de una lista. Ese esquema de recursión se llama un pliegue, y podríamos doblar y doblar de la siguiente manera:
lista doubleAndFold = lista foldl (+) 0 $ fmap (* 2)
La clase de mónada también hace que “poner las cosas en orden” sea fácil. No voy a entrar en lo que es una mónada, pero mi punto es que Haskell hace que todas las cosas en las que los lenguajes de programación funcionales son generalmente malos (código imperativo, bucles, etc.) realmente fáciles y más seguros de arrancar. Los errores fuera de uno, las excepciones de puntero nulo y todos los demás archivos basura desaparecen.