How to use the useWith function from ramda

Find comprehensive JavaScript ramda.useWith code examples handpicked from public code repositorys.

ramda.useWith takes a function and a set of transformers as input and returns a new function that applies the transformers to the arguments before passing them to the original function.

406
407
408
409
410
411
412
413
414
415
416
    })), markers) : undefined;
  });
};


exports.getCenterByHotelsMarkers = getCenterByHotelsMarkers;
var getAvailableDates = R.useWith(function (availableDates, key) {
  return R.propOr(EMPTY_ARRAY, key, availableDates);
}, [R.pipe(domain, function (search) {
  return search.get('availableDates');
}), R.prop('key')]);
fork icon0
star icon3
watch icon4

+ 41 other calls in file

4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
* @param {Function} fn The function to wrap.
* @param {Array} transformers A list of transformer functions
* @return {Function} The wrapped function.
* @example
*
*      R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81
*      R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81
*      R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32
*      R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32
*/
fork icon0
star icon0
watch icon0

+ 71 other calls in file

How does ramda.useWith work?

ramda.useWith is a higher-order function that allows you to create a new function by specifying a template function and a list of functions that will be applied to its arguments before they are passed to the template function.

When you call the resulting function, it will invoke the list of functions with the arguments provided, and pass the results of those function calls to the template function.

This is useful when you have multiple functions that you want to compose together to produce a final result, but the argument lists for those functions do not match up perfectly.

160
161
162
163
164
165
166
167
168
169
170
var decreaseOne = x => x - 1;
var increaseOne = x => x + 1;
var useWith1 = R.useWith(Math.pow, [decreaseOne, increaseOne]);
log(useWith1(3)(4));
log(useWith1(3, 4));
var useWith2 = R.useWith(Math.pow, [increaseOne, decreaseOne]);
log(useWith2(3)(4));
log(useWith2(3, 4));


var gt10 = x => x > 10;
fork icon0
star icon0
watch icon0

+ 19 other calls in file

2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
* @sig ((x1, x2, ...) -> z) -> [((a, b, ...) -> x1), ((a, b, ...) -> x2), ...] -> (a -> b -> ... -> z)
* @param {Function} after A function. `after` will be invoked with the return values of
*        `fn1` and `fn2` as its arguments.
* @param {Array} functions A list of functions.
* @return {Function} A new function.
* @see R.useWith
* @example
*
*      const average = R.converge(R.divide, [R.sum, R.length])
*      average([1, 2, 3, 4, 5, 6, 7]) //=> 4
fork icon0
star icon0
watch icon2

+ 23 other calls in file

Ai Example

1
2
3
4
5
const R = require("ramda");

const sum = R.useWith(R.add, [R.identity, R.identity]);

console.log(sum(5, 10)); // Output: 15

In this example, ramda.useWith is used to create a function sum that takes two arguments, and returns their sum. The R.identity function is used twice to indicate that the arguments should be passed through without modification, and R.add is used as the function that performs the actual addition. The resulting function sum can be called with two arguments, and will return their sum.

9
10
11
12
13
14
15
16
17
18
19
//     });


//     return result;
// };


const mergeTimeSlots = R.useWith(R.symmetricDifferenceWith(R.eqBy(R.prop('id'))), [R.identity, R.identity])


console.log(mergeTimeSlots)
fork icon0
star icon0
watch icon0

Other functions in ramda

Sorted by popularity

function icon

ramda.clone is the most popular function in ramda (30311 examples)