Lesson 12: Functional Libraries: Ramda, Lodash

As part of Functional Programming in JavaScript, this lesson focuses on two popular functional libraries: Ramda and Lodash.

Introduction to Ramda

Ramda is a practical functional library for JavaScript programmers. The library is built to support immutable data and provides a rich set of functions for functional programming.


const R = require('ramda');

const add10 = R.add(10);
console.log(add10(5)); // 15

const multiply2 = R.multiply(2);
console.log(multiply2(4)); // 8

Introduction to Lodash

Lodash provides utility functions for common programming tasks, much like Underscore.js, but with a focus on performance and simplicity. Lodash has adopted a functional programming style post version 4.


const _ = require('lodash');

const numbers = [1, 2, 3, 4, 5];
const doubled = _.map(numbers, n => n * 2);
console.log(doubled); // [2, 4, 6, 8, 10]

Functional Concepts in Ramda

Ramda embraces currying and functional composition heavily. Let's explore these concepts with code examples:


const R = require('ramda');

// Currying
const addThreeNumbers = (a, b, c) => a + b + c;
const curriedAddThreeNumbers = R.curry(addThreeNumbers);

console.log(curriedAddThreeNumbers(1)(2)(3)); // 6

// Function Composition
const composedFunction = R.compose(Math.abs, R.multiply(2));
console.log(composedFunction(-4)); // 8
Input
CURRIED: Add Three Numbers
COMPOSITION: Multiply by 2
Output

Functional Concepts in Lodash

Lodash also supports functional programming styles, including functions for currying and composition:


const _ = require('lodash');

// Currying
const addThreeNumbers = (a, b, c) => a + b + c;
const curriedAddThreeNumbers = _.curry(addThreeNumbers);

console.log(curriedAddThreeNumbers(1)(2)(3)); // 6

// Function Composition
const composedFunction = _.flow([_.multiply(2), Math.abs]);
console.log(composedFunction(-4)); // 8

Comparison of Ramda and Lodash

Both libraries have their strengths and can be used to write clearer, more expressive JavaScript code. However, there are a few differences:

  • Ramda: Focuses more on functional purity, immutability, and currying.
  • Lodash: Emphasizes utility functions with a focus on performance and a lodash/fp variant for functional programming.

Conclusion

Understanding and utilizing libraries like Ramda and Lodash can significantly enhance your functional programming skills in JavaScript. Start by exploring their documentation and integrating them into your projects.

Continue your journey with related lessons: