Programación Funcional

Una noche de juerga con funciones

¿Qué es la Programación Funcional? Es un paradigma de programación que trata la computación como la evaluación de funciones matemáticas y evita cambiar el estado y los datos mutables. En términos simples: cada función hace una sola cosa, la hace bien, y no afecta nada más.

La Programación Funcional: Una Noche de Juerga

Imagina la programación funcional como una noche de fiesta bien organizada:

El Local de Fiesta

Las Funciones Puras son como bartenders profesionales: siempre que pides un "Cuba Libre" con los mismos ingredientes, te entregan exactamente la misma bebida. No guardan información de clientes anteriores ni cambian la receta a mitad de noche.

Los Asistentes

El Portero (Predicate)

Solo hace una cosa: mira tu DNI y decide SI o NO entras. No te cobra, no te sirve tragos, solo verifica y decide.

El DJ (Function)

Recibe tus peticiones de canciones y las transforma en música. Le das el nombre de una canción y te devuelve ritmos para bailar.

El Camarero (Consumer)

Toma tu orden pero no te devuelve nada inmediatamente - simplemente se lleva tu pedido a la barra.

La Máquina de Chupitos (Supplier)

No necesita que le des nada, solo aprietas un botón y te da un shot.

El Barman (BiFunction)

Recibe dos cosas (un tipo de licor y un mixer) y te devuelve un cóctel completamente diferente.

La Dinámica

Lo divertido de esta fiesta es que cada persona tiene UN SOLO TRABAJO y lo hace bien. No hay meseros que también cobren la entrada o DJs que preparen tragos.

Y la magia ocurre cuando todos trabajan juntos, en cadena:

1
El Portero verifica tu edad (Predicate)
2
La Máquina te da un chupito de bienvenida (Supplier)
3
El DJ transforma tu petición en música (Function)
4
Los camareros recogen los vasos vacíos (Consumer)

Así funciona la programación funcional – dividiendo todo en funciones especializadas que hacen una cosa bien y pueden combinarse para crear una experiencia completa.

Y al final de la noche, aunque la fiesta fue épica, el local vuelve a su estado original (inmutabilidad) – listo para la siguiente noche sin arrastrar problemas de fiestas anteriores.

Ejemplo en código

// Ejemplo de una noche de fiesta funcional en JavaScript

// El Portero (Predicate)
const portero = edad => edad >= 18;

// La Máquina de Chupitos (Supplier)
const maquinaChupitos = () => "Shot de Pisco";

// El DJ (Function)
const dj = cancion => `Ritmo de ${cancion} para bailar`;

// El Camarero (Consumer)
const camarero = orden => {
    console.log(`Llevando ${orden} a la barra...`);
};

// El Barman (BiFunction)
const barman = (licor, mixer) => `Cóctel de ${licor} con ${mixer}`;

// La fiesta en acción
const cliente = {
    nombre: "Carlos",
    edad: 25,
    cancionFavorita: "Salsa Perucha"
};

// Cadena de funciones
if (portero(cliente.edad)) {
    const bienvenida = maquinaChupitos();
    console.log(`Bienvenido ${cliente.nombre}, aquí tienes: ${bienvenida}`);
    
    const musica = dj(cliente.cancionFavorita);
    console.log(musica);
    
    const cocktail = barman("Pisco", "Maracuyá");
    camarero(cocktail);
} else {
    console.log("Lo siento, no puedes entrar a la fiesta");
}