¿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.
Imagina la programación funcional como una noche de fiesta bien organizada:
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.
Solo hace una cosa: mira tu DNI y decide SI o NO entras. No te cobra, no te sirve tragos, solo verifica y decide.
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.
Toma tu orden pero no te devuelve nada inmediatamente - simplemente se lleva tu pedido a la barra.
No necesita que le des nada, solo aprietas un botón y te da un shot.
Recibe dos cosas (un tipo de licor y un mixer) y te devuelve un cóctel completamente diferente.
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:
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 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"); }