Antecedentes
En la codificación informática, es muy importante escribir un código realmente bueno. Un buen código no solo hace que los programas se ejecuten más rápido, también ayuda a los desarrolladores a trabajar mejor. Pero descubrir qué hace que un código sea bueno puede ser complicado, y no se trata solo de hacer que las cosas se ejecuten rápidamente.
Un buen código tiene cosas como ser fácil de probar, fácil de mantener, fácil de reutilizar y fácil de añadir más cosas. Estas cosas son como medidas de lo sólido y confiable que es el código. Pero saber cómo hacer un código así no siempre es claro, por lo que buscamos formas de ayudarnos a escribir un código limpio.
Una forma genial de hacer esto es mediante el uso de la programación funcional. Es un estilo de codificación inspirado en las matemáticas, y se trata de usar expresiones y combinar funciones. Separamos las funciones puras, que solo hacen una cosa y no interfieren con nada más, de las impuras, que hacen más cosas. Esto ayuda a que nuestro código no solo sea fácil de entender, sino que también hace que las pruebas y modificaciones sean mucho más simples.
En ABAP (un lenguaje de programación), la programación orientada a objetos en ABAP es una excelente manera de utilizar ideas de programación funcional. No es una solución perfecta para todo, pero realmente nos ayuda a pensar en problemas de nuevas maneras.
Programación Funcional en Breve
La programación funcional es programar usando funciones.
La programación funcional es como construir con bloques de LEGO, combinando funciones para construir un uso nuevo y diferente de la función.
Echemos un vistazo a los ejemplos de código
Haskell
, que muestran la esencia de la programación funcional:
even :: (Integral a) => a -> Bool
even x
| x `mod` 2 == 0 = True
| otherwise = False
Aquí, he definido una función llamada
even
que toma un valor integral,
x
, y devuelve un booleano que indica si
x
es par. He usado guardias (|) para hacer el código conciso y expresivo, que es la principal característica de la programación funcional.
odd :: (Integral a) => a -> Bool
odd = not . even
En este ejemplo, aprovecho el operador de composición (.) para definir la función
odd
de manera sucinta. Aprovecho la función
even
previamente definida, mostrando el poder de componer funciones para crear nuevas.
filter :: (a -> Bool) -> [a] -> [a]
filter _ [] = []
filter pred (x:xs)
| pred x = x : filter pred xs
| otherwise = filter pred xs
La función
filter
muestra una función superior común en la programación funcional. Tomo una función de predicado,,