How to use the converge function from ramda

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

ramda.converge is a higher-order function that takes multiple functions and a combining function, applies the input arguments to each of the provided functions, and then passes the results to the combining function.

52
53
54
55
56
57
58
59
60
61
 */
exports.formatSuperLinterOutput = (output) => {
  const f = R.pipe(
    // group by Language Type
    R.groupBy(R.prop("linter")),
    R.converge(
      R.zipWith((k, v) => ({
        [k]: R.pipe(
          // then group by the file
          R.groupBy(R.prop("file")),
fork icon2
star icon5
watch icon0

+ 5 other calls in file

7
8
9
10
11
12
13
14
15
16
17
18
const { mergeExport: merge } = require('./utils');
const { setupReplServer } = require('./command/internals/repl');


const isNotEmptyOrNil = compose(
  not,
  converge(or, [isNil, isEmpty]),
);


async function immersive(userConfig = {}) {
  const {
fork icon0
star icon4
watch icon0

How does ramda.converge work?

ramda.converge is a higher-order function that takes a function and a list of functions and returns a new function. The new function takes arguments that are passed to each function in the list and then passes the results of those functions as arguments to the first function.

50
51
52
53
54
55
56
57
58
59
60
61
62
  }


  return a
}


const lcm = R.converge(R.divide, [R.multiply, gcd])


const frequency = (x) =>
  R.reduce(
    (freqs, x) => {
fork icon0
star icon1
watch icon0

+ 4 other calls in file

14
15
16
17
18
19
20
21
22
23
24
      ),
    ),
  ),
)


const boardFromInput = R.converge(
  R.reduce((acc, row) => {
    for (const [from, to] of R.aperture(2, row)) {
      for (const pos of iterateStraightLines(from, to)) {
        acc[vec.key(pos)] = '#'
fork icon0
star icon1
watch icon0

+ 2 other calls in file

Ai Example

1
2
3
4
5
const greet = (greeting, name) => `${greeting} ${name}!`;

const greetWithExcitement = R.converge(greet, [R.toUpper, R.identity]);

console.log(greetWithExcitement("hello", "world")); // "HELLO world!"

In this example, R.converge is used to create a new function that takes two arguments: a greeting and a name. The greet function concatenates these two arguments into a string, and the greetWithExcitement function is created by calling R.converge with greet as the first argument, and an array of two functions as the second argument. The first function in the array, R.toUpper, converts the greeting argument to uppercase, while the second function, R.identity, simply returns the name argument. The result is a function that will take two arguments (greeting and name), convert the greeting to uppercase, and then call greet with the two arguments.

23
24
25
26
27
28
29
30
31
32
33
34


const part1 = (input) => {
  const grid = parseBoard(input)


  return R.pipe(
    R.converge(R.xprod, [
      R.pipe(R.prop(0), R.length, R.range(0)),
      R.pipe(R.length, R.range(0)),
    ]),
    R.filter(isVisible(grid)),
fork icon0
star icon1
watch icon0

+ 5 other calls in file

191
192
193
194
195
196
197
198
199
200
// 4
// 相当于 28 除以 7

var toUpperCase = s => s.toUpperCase();
var toLowerCase = s => s.toLowerCase();
var strangeConcat = R.converge(R.concat, [toUpperCase, toLowerCase])
strangeConcat("Yodel")
// "YODELyodel"
// 相当于 R.concat('YODEL', 'yodel')
```
fork icon0
star icon1
watch icon1

+ 3 other calls in file

85
86
87
88
89
90
91
92
93
94
  (expiry_getter_fn, get_current_time_in_seconds_fn, decrypted_token) => Either(decrypted_token | TokenExpiryError)
*/
const check_token_expiry = R.curry((expiryGetter, getCurrentTimeInSeconds, token) => {
    return R.ifElse(
        R.either(
            R.converge(R.lt, [getCurrentTimeInSeconds, expiryGetter]),
            R.compose(R.isNil, expiryGetter)
        ),
        Either.Right,
        (token) => Either.Left(new TokenExpiryError("Token is expired"))
fork icon1
star icon0
watch icon12

+ 209 other calls in file

6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
 *
 *      //≅ multiply( add(1, 2), subtract(1, 2) );
 *      R.converge(multiply, [add, subtract])(1, 2); //=> -3
 *
 *      var add3 = (a, b, c) => a + b + c;
 *      R.converge(add3, [multiply, add, subtract])(1, 2); //=> 4
 */
var converge = _curry2(function converge(after, fns) {
    return curryN(reduce(max, 0, pluck('length', fns)), function () {
        var args = arguments;
fork icon0
star icon0
watch icon0

+ 56 other calls in file

14
15
16
17
18
19
20
21
22
23
const parseOperation = withDivide => R.compose(
  createFromKey('operation'),
  fn => value => {
    return withDivide ? Math.floor(R.divide(fn(value, value), 3)) : fn(value, value)
  },
  R.converge(R.apply, [
    R.ifElse(
      R.compose(R.equals('*'), R.nth(1)),
      R.always(R.multiply),
      R.always(R.add),
fork icon0
star icon0
watch icon0

+ 11 other calls in file

4
5
6
7
8
9
10
11
12
13
14
15
  R.divide(R.__, 2),
  R.apply(R.add),
  R.props(["upper", "lower"])
);


const getMidElement = R.converge(R.nth, [getMidIndex, R.prop("list")]);
const getSearchValue = R.prop("searchValue");


var binarySearch = R.compose(
  R.prop("ans"),
fork icon0
star icon0
watch icon0

+ 17 other calls in file

7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
*
*      var indentN = R.pipe(R.times(R.always(' ')),
*                           R.join(''),
*                           R.replace(/^(?!$)/gm));
*
*      var format = R.converge(R.call, [
*                                  R.pipe(R.prop('indent'), indentN),
*                                  R.prop('value')
*                              ]);
*
fork icon0
star icon0
watch icon0

+ 53 other calls in file

8
9
10
11
12
13
14
15
16
17
18
19
20


const forest = R.map(R.map(Number), content)
const width = R.compose(R.length, R.head)(forest)
const height = R.length(forest)


const flatForest = R.converge(R.reduce(R.concat), [R.head, R.tail])(forest)
const indexToCoordinates = R.converge(Array.of, [R.modulo(R.__, width), R.compose(Math.floor, R.divide(R.__, height))])


const splits = R.curry((index, row) => R.compose(R.converge(Array.of, [R.head, R.compose(R.drop(1), R.last)]), R.splitAt(index))(row))
const isVisibleFromEitherDirection = R.curry((splits, value) => R.any(R.all(R.gt(value)), splits))
fork icon0
star icon0
watch icon0

+ 5 other calls in file

98
99
100
101
102
103
104
105
106
107
//  abortIfNotSorted :: List[{*}] -> List[{*}]
var abortIfNotSorted = R.tap(R.cond([[
  R.complement(R.pipe(
      R.pluck('id'),
      R.pluck('name'),
      R.converge(R.equals, R.identity, R.sortBy(R.identity))
    )),
  R.pipe(
      R.path(['0', 'loc', 'source']),
      R.concat('Dependencies not declared in alphabetical order in '),
fork icon0
star icon0
watch icon0

+ 2 other calls in file

136
137
138
139
140
141
142
143
144
145
146
147
148
  return sum;
}


var lengthOfArr = arr => arr.length;


var average = R.converge(R.divide, [sumOfArr, lengthOfArr]);


log(average([1, 2, 3, 4, 5, 6, 7]));
log(sumOfArr([1, 2, 3, 4, 5, 6, 7]));

fork icon0
star icon0
watch icon0

+ 29 other calls in file

76
77
78
79
80
81
82
83
84
85
const r = row(cave, R.head(blocked))

const nextDropX = R.compose(
  R.head,
  R.reject(R.compose(isBlocked, R.last)),
  R.converge(R.zip, [R.identity, R.map(R.nth(R.__, r))]),
  R.converge(Array.of, [R.dec, R.inc]),
)(startPoint[0])

if (!nextDropX) return coordinatesToIndex([startPoint[0], R.dec(R.head(blocked))])
fork icon0
star icon0
watch icon0

+ 5 other calls in file

175
176
177
178
179
180
181
182
183
184
        (await Promise.allSettled(flows))
            .filter((v) => v.value)
            .map((v) => v.value)
            .flat()

    return R.converge(convergingF, pipes)(input)
}

/**
 * Creates sequential composition of flows
fork icon0
star icon0
watch icon0

1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
*
*      const indentN = R.pipe(R.repeat(' '),
*                           R.join(''),
*                           R.replace(/^(?!$)/gm));
*
*      const format = R.converge(R.call, [
*                                  R.pipe(R.prop('indent'), indentN),
*                                  R.prop('value')
*                              ]);
*
fork icon0
star icon0
watch icon2

+ 19 other calls in file

16
17
18
19
20
21
22
23
24
25
26
27
  R.map(parseInstruction)
)(content)


const part1 = R.compose(
  R.sum,
  R.converge(Array.of, indices),
  R.addIndex(R.map)((value, index) => R.multiply(value, R.inc(index))),
)(registerValues)


const screen = R.addIndex(R.map)((_, i) => R.inc(i), Array(40*6))
fork icon0
star icon0
watch icon0

36
37
38
39
40
41
42
43
44
45
46
)(content)


const moveRopeKnots = R.curry((rope, direction) => R.converge(
  R.scan((acc, knot) => R.when(
      R.compose(R.lt(Math.sqrt(2)), distanceBetweenPoints(acc)), 
      R.converge(move, [R.compose(vectorComponentCap, R.flip(vectorBetween)(acc)), R.identity])
    )(knot)
  ), [R.compose(move(direction), R.head), R.tail])(rope)
)

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)