A comprehensive collection of utilities for Ramda, providing a variety of useful, well tested, reusable functions.
yarn add @flybondi/ramda-land
yarn add ramda
Mix and match @flybondi/ramda-land
functions with common ramda
functions.
const { when } = require('ramda');
const { isNilOrEmpty, alwaysNew } = require('@flybondi/ramda-land');
const defaultToLife = when(isNilOrEmpty, alwaysNew({ life: 42 }));
defaultToLife(null); // -> { life: 42 }
defaultToLife({ foo: 'bar' }); // -> { foo: 'bar' }
curry
, curryN
and nAry
functions are exported by both @flybondi/ramda-land
and ramda
. They behave in the exact same way, except that @flybondi/ramda-land
counterparts retain wrapped function names after currying. This is useful for debugging and error tracing purposes as the name of the original function passed to any of the aforementioned functions will now appear on stack traces and debuggers (instead of an anonymous or sometimes arbitrarily named, internal ramda
function).
This change was already proposed to the Ramda team and a PR is pending approval.
> curry(function foo(x, y) { return x + y; });
[Function: foo]
> curry(function foo(x, y) { return x + y; })(1)
[Function: foo]
> curryN(2, function foo(x, y) { return x + y; })
[Function: foo]
> curryN(2, function foo(x, y) { return x + y; })(1)
[Function: foo]
> nAry(3, function foo(x, y) { return x + y; })
[Function: foo]