Ejemplos prácticos de programación funcional en PHP

Despliegue en servidores web

Introducción

La programación funcional es un paradigma de programación que se centra en la creación de funciones puras, lo que significa que una función toma en cuenta solo sus entradas y produce una salida sin causar ningún efecto secundario. PHP, como lenguaje de programación, tiene muchas características que lo hacen ideal para la programación funcional, como la flexibilidad en la definición de funciones y la capacidad de usar funciones como ciudadanos de primera clase. En este artículo, veremos ejemplos prácticos de cómo usar la programación funcional en PHP.

Funciones Puras

Una de las características clave de la programación funcional es la creación de funciones puras. En PHP, las funciones puras no deberían alterar ninguna variable fuera de su alcance y tampoco tendrán efectos secundarios. Además, para crear funciones puras en PHP, debemos definir propiedades que se mantengan constantes en todas las invocaciones de la función.

Un ejemplo de una función pura en PHP es una función que toma un número y lo eleva al cuadrado:

function cuadrado($n) { return $n * $n; }

Esta función es pura porque no tiene efectos secundarios y su resultado solo depende de la entrada que recibe.

Funciones Anónimas

Otra característica de PHP que se presta a la programación funcional es la capacidad de definir funciones anónimas. Las funciones anónimas son funciones sin un nombre explícito y se definen como variables. Las funciones anónimas son útiles para pasarse como argumento a otras funciones, lo que se conoce como función de orden superior.

Un ejemplo de una función anónima es una función que toma un número y devuelve su cuadrado:

$cua = function($n) { return $n * $n; }; echo $cua(5); //Devuelve 25.

En este ejemplo, hemos creado una función anónima que toma un número y lo eleva al cuadrado. Luego, hemos asignado esta función a una variable llamada '$cua'. Finalmente, hemos llamado a la función '$cua' pasándole un valor y hemos impreso el resultado en pantalla.

Funciones de Orden Superior

Las funciones de orden superior son funciones que toman una o varias funciones como argumentos y devuelven otra función. Las funciones de orden superior son útiles para encapsular cierta lógica común que se encuentra en varias funciones.

Un ejemplo de una función de orden superior es una función que toma una función como argumento y la aplica a un valor:

function aplica($f, $n) { return $f($n); } $cua = function($n) { return $n * $n; }; echo aplica($cua, 5); //Devuelve 25.

En este ejemplo, hemos creado una función llamada 'aplica' que toma dos argumentos: una función y un número. La función 'aplica' aplica la función recibida como primer argumento al número recibido como segundo argumento.

Funciones de Reducción

Las funciones de reducción son funciones de orden superior que permiten combinar una lista de elementos en un solo resultado. Las funciones de reducción son especialmente útiles para resumir grandes cantidades de datos.

Un ejemplo de una función de reducción es una función que suma los números en una lista:

$nums = [1, 2, 3, 4, 5]; $suma = array_reduce($nums, function($a, $b) { return $a + $b; }); echo $suma; //Devuelve 15.

En este ejemplo, hemos creado una lista de números llamada '$nums' y hemos usado la función 'array_reduce' de PHP para sumar los números de la lista. La función 'array_reduce' toma dos argumentos: una lista y una función de reducción. La función de reducción toma dos argumentos: el valor anterior y el valor actual y devuelve el valor acumulado.

Currying

Currying es una técnica que se utiliza para transformar una función que toma múltiples argumentos en una serie de funciones que toman solo un argumento. Currying es una técnica muy útil en la programación funcional porque permite que las funciones se compongan de manera clara y sencilla.

Un ejemplo de una función curried es una función que suma dos números:

function sumar($a) { return function($b) use ($a) { return $a + $b; }; } $suma5 = sumar(5); echo $suma5(3); //Devuelve 8.

En este ejemplo, hemos creado una función llamada 'sumar' que toma un argumento '$a' y devuelve una función que toma un argumento '$b' y devuelve la suma de '$a' y '$b'. Luego, hemos creado una nueva función llamada '$suma5' que suma 5 al número que le pasemos, lo que podemos hacer utilizando la función 'sumar' con el valor 5. Finalmente, hemos llamado a la función '$suma5' pasándole el valor 3 y hemos impreso el resultado en pantalla.

Composición de Funciones

La composición de funciones es una técnica que se utiliza para combinar funciones de manera clara y sencilla. La composición de funciones es muy útil en la programación funcional porque permite que las funciones se compongan de manera clara y sencilla.

Un ejemplo de una función compuesta es una función que toma una lista de números, aplica la función cuadrado a cada uno de ellos y luego los suma:

$nums = [1, 2, 3, 4, 5]; $cuadrados = array_map(function($n) { return $n * $n; }, $nums); $suma = array_reduce($cuadrados, function($a, $b) { return $a + $b; }); echo $suma; //Devuelve 55.

En este ejemplo, hemos creado una lista de números llamada '$nums'. Luego, hemos utilizado la función 'array_map' de PHP para aplicar la función cuadrado a cada uno de los números en la lista. Finalmente, hemos utilizado la función 'array_reduce' de PHP para sumar los números en la lista de cuadrados. El resultado de la suma es 55.

Conclusión

La programación funcional es un paradigma de programación poderoso que se enfoca en la creación de funciones puras, funciones anónimas, funciones de orden superior, funciones de reducción, currying y composición de funciones. PHP, como lenguaje de programación, tiene muchas características que lo hacen ideal para la programación funcional. Esperamos que los ejemplos prácticos presentados en este artículo sean útiles para aquellos que desean aprender más sobre cómo utilizar la programación funcional en PHP.