Introducción a Programación Funcional con Javascript

Jose Jan Pierre Sanchez Manosalva
4 min readJun 17, 2020

--

A continuación indico algunos conceptos principales de la programación funcional con el lenguaje de programación Javascript

La programación Funcional (FP) es un paradigma de programación con algunas técnicas particulares.

Haskell, Clojure y Scala son algunos de los más populares lenguajes de programación puramente funcionales.

La programación funcional no es un nuevo concepto, en realidad sus raíces se remontan a la década de 1930, cuando nació el calculo lamda, y ha influido en muchos lenguajes de programación, y ha estado ganando mucho impulso últimamente por lo que es el momento perfecto para aprenderlo

Funciones de primera clase

En programación funcional, las funciones son ciudadanos de primera clase.

Las funciones puede ser asignadas como variables

también una función puede ser agregado a un objecto:

como también a los arrays:

Las funciones puede ser usado como un argumento de otras funciones

Las funciones pueden retornar otras funciones

Funciones de Orden Superior

Las funciones que aceptan como argumento o retornar otras funciones son llamados Funciones de Orden Superior.

Ejemplos donde aplica esto en javascript es: Array.map(), Array.filter() and Array.reduce()

Programación Declarativa

Es posible que haya escuchado el término “programación declarativa”, ahora veremos ese punto.

Lo opuesto de lo declarativo es imperativo

Declarativo vs Imperativo

La programación imperativo es cuando le dice a la máquina (en términos generales), los pasos que debe seguir para realizar un trabajo.

La programación declarativo es cuando le dice a la máquina lo que necesita hacer y deja que descubra los detalles.

Empiezas a pensar en forma declarativa cuando tienes suficiente nivel de abstracción para dejar de razonar sobre construcciones de bajo nivel, y piensas más en un nivel de UI más alto.

HTML es declarativo, por lo que si ha estado usando HTML desde 1995, en realidad ha estado creando UI declarativas desde hace más de 20 años.

JavaScript puede adoptar un enfoque de programación imperativo y declarativo.

Por ejemplo, un enfoque de programación declarativa es evitar el uso de bucles y, en su lugar, usar construcciones de programación funcionales como map, reduce y filter, porque son más abstractos y están menos enfocados en decirle a la máquina cada paso del procesamiento.

Inmutabilidad

En la programación funcional, los datos nuncan cambian. Los datos son inmutables.

Una variable nunca se puede cambiar. Para actualizar su valor, crea una nueva variable.

En lugar de cambiar una matriz, para agregar un nuevo elemento, crea una nueva matriz concatenando la matriz anterior, más el nuevo elemento.

Un objeto nunca se actualiza, sino que se copia antes de cambiarlo.

Función pura

Una función pura, los parámetros que se le pasan por referencia nunca deben cambiar, ya que debe considerarse inmutables, pero si puede cambiar su valor de cualquier parámetro copiado a otra variable.

Una función pura es, siempre que se pase los mismos valores de los parámetros de entrada siempre retorne el mismo resultado como salida.

Transformaciones de datos

Dado que la inmutabilidad es un concepto tan importante y una base de la programación funcional, puede preguntarse cómo pueden cambiar los datos.

Simple: los datos se cambian creando copias.

Las funciones principales que hacen esto son map y reduce.

Array.map()
Array.reduce()

Recursividad

La recursión es un tema clave en la programación funcional. cuando una función se llama a sí misma, se llama función recursiva.

El ejemplo clásico de recursión es el cálculo de la secuencia de Fibonacci (N = (N-1 + N-2))

--

--