Engineering Core
ISB Vietnam's skilled software engineers deliver high-quality applications, leveraging their extensive experience in developing financial tools, business management systems, medical technology, and mobile/web platforms.

In the JavaScript ecosystem, Ramda is a practical functional library for JavaScript programmers. It is designed to help us write more readable, cleaner, and fewer error codes. If you are looking for a tool that makes working with data more efficient without worrying about state or side effects, Ramda is a great choice.

 

1. What is Ramda?

Ramda is an open-source JavaScript library focused entirely on functional programming. Unlike libraries like Lodash or Underscore.js, Ramda has unique characteristics, such as:

  • Pure Functions: Functions in Ramda do not modify the original data.
  • Currying and Composition: It makes it easier to work with small, reusable functions.
  • Readable and Scalable: Ramda promotes clear and functional code organization

 

2. How to Get Started

To start using Ramda, install it via npm or yarn:

          // in bash          

          npm install ramda

 

Then import and use it:

          import R from 'ramda';

 

         const personObj= { name: 'Lana', age: 20 };

 

          const name = R.prop('name', personObj);

          const age= R.prop('age', personObj);

 

          console.log(name ); // Output: Lana

          console.log(age); // Output: 20

Note for versions > 0.25: Ramda versions > 0.25 don't have a default export. So instead of import R from 'ramda';, one has to use import * as R from 'ramda'; Or better yet, import only the required functions via import { functionName } from 'ramda';

Note for ES6 module and browsers: In order to access the ES6 module in browsers, one has to provide the content of the es directory (see below for the build instructions) and use import * as R from './node_modules/ramda/es/index.js';

 

3. Key Features:

3.1. Currying

Currying allows you to break a multi-parameter function into a series of single-parameter functions.

Example:

         import R from 'ramda';

 

         const add = R.add;

 

         const addNumber = add(10); // Create a new function

         console.log(addNumber(5)); // Output: 15

 

3.2. Composition

You can combine small functions into larger, more complex functions using compose or pipe.

Example:

         import R from 'ramda';  

 

         const double = x => x * 2;

         const increment = x => x + 11;

 

         const doubleThenIncrement = R.compose(increment, double);

         console.log(doubleThenIncrement(10)); // Output: 31

 

3.3. Immutable and Pure Functions

Ramda ensures data immutability, avoiding unintended state changes.

Example:

        import R from 'ramda';

 

         const personObj= { name: 'Lana', age: 20 };

         const newPersonObj = R.assoc('age', 30, personObj);

 

         console.log(personObj);    // { name: 'Lana', age: 20 }

         console.log(newPersonObj ); // { name: 'Lana', age: 30 }

 

 

4. Benefits of using Ramda

Ease of maintenance: Write concise, readable code, and minimize errors.

Reusability: Small functions can be reused and combined flexibly.

Support for functional programming: Helps you apply functional programming principles naturally.

 

5. Why should we use Ramda?

As introduced at the article's beginning, Ramda is a collection of general utility functions suitable for many problems.

One difference from other similar utility libraries is that Ramda has a functional programming style, so it is often used in projects with a functional programming style.

 

6. When to Use Ramda?

Ramda is ideal for projects where:

  • Complex data transformations are required.
  • Code readability and testability are priorities.
  • Functional programming principles are preferred.

 

Conclusion:

This article is just to introduce everyone to a utility library that supports JavaScript functional programming, Ramda. With features like currying, composition, and immutability, Ramda provides many functions that focus on solving a small problem; besides that, you can easily combine them together to create a powerful program.

When Ramda becomes a common language in many projects, it helps developers create maintainable, extensible, and error-free applications

 

References: 

https://ramdajs.com/

https://2coffee.dev/en/articles/introduction-to-the-ramda-functional-programming-library

https://www.freepik.com/free-photo/html-css-collage-concept_36295536.htm#fromView=search&page=2&position=6&uuid=f3990617-3357-4a34-a74a-45f3190bd796 (image source)

 

 

Written by
Author Avatar
Engineering Core
ISB Vietnam's skilled software engineers deliver high-quality applications, leveraging their extensive experience in developing financial tools, business management systems, medical technology, and mobile/web platforms.

COMPANY PROFILE

Please check out our Company Profile.

Download

COMPANY PORTFOLIO

Explore my work!

Download

ASK ISB Vietnam ABOUT DEVELOPMENT

Let's talk about your project!

Contact US