Librerias Js - Ramda js y la programación funcional

 

Ramda js y la programación funcional

Ramda js es una de las librerías que esta adquiriendo más tracción en el universo de JavaScript .  Se trata de una librería orientada a la programación funcional como ya lo son Lodash o Underscore . ¿Qué es lo que hace a Ramda js diferente?. Para entenderlo hay que construir un ejemplo concreto con Lodash . Vamos a usar un array con alumnos  y calcular la media de todas las notas que sean menores de 5 .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var lista = [{
        nombre: "pepe",
        nota: 1
    }, {
        nombre: "ana",
        nota: 5
    }, {
        nombre: "gema",
        nota: 7
    }, {
        nombre: "angel",
        nota: 3
    }];
 
    var resultado = _.chain(lista)
        .map(item=>item.nota)
        .filter(item=>item<5)
        .mean()
        .value();
 
 
    console.log(resultado);

Se trata de una operación natural, primero usamos map para quedarnos únicamente con las notas de cada alumno. Acto seguido filtramos las que son menores de 5 con filter. Una vez filtradas usamos el método mean y calculamos la media. Finalmente solicitamos el valor de la media calculada y lo imprimimos en la consola , nos imprimirá 2.

ramda js y lodash

Estamos acostumbrados a esta sintaxis fluida a la hora de trabajar con programación funcional. ¿Cómo enfoca Ramda?

Usando Ramda js

Rambda js es una librería de JavaScript orientada a la programación funcional  . Lo que destaca de Ramba js es su enfoque. Vamos a ver el mismo ejemplo anterior con  Ramda.

1
var resultado2=R.mean(R.filter(item=>item<5,R.map(item=>item.nota,lista)));

El código es diferente y más compacto , pero también más difícil de entender en un primer momento. Sin embargo  es una forma de expresarse más natural y más matemática.  Primero se aplica map sobre la lista , después sobre el resultado filter y finalmente mean.

ramda js

En matemáticas definiríamos el funcionamiento  como mean(filter(map())).  Al principio no  convence mucho . Pero la programación funcional hace mucho hincapié en la reutilización y creación de nuevas funciones. Es en esta parte donde  Ramda brilla. Supongamos que queremos generar una función que calcule las notas suspensas:

1
2
var notasSuspensas=lista=>R.filter(item=>item<5,R.map(item=>item.nota,lista));
var media= R.mean(notasSuspensas(lista));

Es muy sencillo ,acabamos de crear una nueva función notasSuspensas a partir de map y filter

ramda js

 

Luego hemos usado esa nueva función para calcular la media:

ramda js

Ramda js nos permite trabajar una forma mucho más natural con los conceptos de programación funcional en javascript. Eso sí tendremos que realizar un esfuerzo a la hora de adaptarnos a la nueva sintaxis.

SHARE

Oscar perez

Arquitecto especialista en gestion de proyectos si necesitas desarrollar algun proyecto en Bogota contactame en el 3006825874 o visita mi pagina en www.arquitectobogota.tk

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 comentarios:

Publicar un comentario