Ramda Adjunct 1.12.0

RA

RA

Source:

Classes

Identity

Methods

isNotObj(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Aliases:
  • isNotObject
Category:
  • Type
See also:
  • isObj, isObjLike, isPlainObj

Checks if input value is complement of language type of Object.

Example
RA.isNotObj({}); //=> false
RA.isNotObj([]); //=> false
RA.isNotObj(() => {}); //=> false
RA.isNotObj(null); //=> true
RA.isNotObj(undefined); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

isNotObjLike(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Aliases:
  • isNotObjectLike
Category:
  • Type
See also:
  • isObjLike, isObj, isPlainObj

Checks if value is not object-like. A value is object-like if it's not null and has a typeof result of "object".

Example
RA.isNotObjLike({}); //=> false
RA.isNotObjLike([]); //=> false
RA.isNotObjLike(() => {}); //=> true
RA.isNotObjLike(null); //=> true
RA.isNotObjLike(undefined); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

isNotPlainObj(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Aliases:
  • isNotPlainObject
Category:
  • Type
See also:
  • isPlainObj, isObjLike, isObj

Check to see if an object is a not plain object (created using {}, new Object() or Object.create(null)).

Example
class Bar {
  constructor() {
    this.prop = 'value';
  }
}

RA.isNotPlainObj(new Bar()); //=> true
RA.isNotPlainObj({ prop: 'value' }); //=> false
RA.isNotPlainObj(['a', 'b', 'c']); //=> true
RA.isNotPlainObj(Object.create(null); //=> false
RA.isNotPlainObj(new Object()); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

isNotValidDate(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Aliases:
  • isInvalidDate
Category:
  • Type
See also:

Checks if value is complement of valid Date object.

Example
RA.isNotValidDate(new Date()); //=> false
RA.isNotValidDate(new Date('a')); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

isObj(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Aliases:
  • isObject
Category:
  • Type
See also:
  • isNotObj, isObjLike, isPlainObj

Checks if input value is language type of Object.

Example
RA.isObj({}); //=> true
RA.isObj([]); //=> true
RA.isObj(() => {}); //=> true
RA.isObj(null); //=> false
RA.isObj(undefined); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

isObjLike(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Aliases:
  • isObjectLike
Category:
  • Type
See also:
  • isNotObjLike, isObj, isPlainObj

Checks if value is object-like. A value is object-like if it's not null and has a typeof result of "object".

Example
RA.isObjLike({}); //=> true
RA.isObjLike([]); //=> true
RA.isObjLike(() => {}); //=> false
RA.isObjLike(null); //=> false
RA.isObjLike(undefined); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

isPlainObj(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Aliases:
  • isPlainObject
Category:
  • Type
See also:
  • isNotPlainObj, isObjLike, isObj

Check to see if an object is a plain object (created using {}, new Object() or Object.create(null)).

Example
class Bar {
  constructor() {
    this.prop = 'value';
  }
}

RA.isPlainObj(new Bar()); //=> false
RA.isPlainObj({ prop: 'value' }); //=> true
RA.isPlainObj(['a', 'b', 'c']); //=> false
RA.isPlainObj(Object.create(null); //=> true
RA.isPlainObj(new Object()); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

mergeRight(l, r) → {Object}

Source:
Since:
Signature:
  • {k: v} -> {k: v} -> {k: v}
Aliases:
  • resetToDefault
Category:
  • Object
See also:

Create a new object with the own properties of the second object merged with the own properties of the first object. If a key exists in both objects, the value from the first object will be used.

Example
RA.mergeRight({ 'age': 40 }, { 'name': 'fred', 'age': 10 });
//=> { 'name': 'fred', 'age': 40 }
Parameters:
Name Type Description
l Object

Source

r Object

Destination

Returns:
Type
Object

(static) cata(leftFn, rightFn, catamorphicObj) → {*}

Source:
Since:
Signature:
  • (a -> b) -> (a -> c) -> Cata a -> b | c
Category:
  • Function
See also:

The catamorphism is a way of folding a type into a value.

Either

If the either is right than the right function will be executed with the right value and the value of the function returned. Otherwise the left function will be called with the left value.

Maybe

If the maybe is Some than the right function will be executed with the some value and the value of the function returned. Otherwise the left function with be called without an argument.

Example
// Either
const eitherR = Either.Right(1);
const eitherL = Either.Left(2);

RA.cata(identity, identity, eitherR); //=> 1
RA.cata(identity, identity, eitherL); //=> 2

// Maybe
const maybeSome = Maybe.Some(1);
const maybeNothing = Maybe.Nothing();

RA.cata(identity, identity, maybeSome); //=> 1
RA.cata(identity, identity, maybeNothing); //=> undefined
Parameters:
Name Type Description
leftFn function

The left function that consumes the left value

rightFn function

The right function that consumes the right value

catamorphicObj Cata

Either, Maybe or any other type with catamorphic capabilities (cata or either method)

Returns:
Type
*

(static) concatRight(firstList, secondList) → {Array|String}

Source:
Since:
Signature:
  • [a] → [a] → [a]
      String → String → String
Category:
  • List
See also:

Returns the result of concatenating the given lists or strings.

Note: R.concat expects both arguments to be of the same type, unlike the native Array.prototype.concat method. It will throw an error if you concat an Array with a non-Array value. Dispatches to the concat method of the second argument, if present.

Example
RA.concatRight('ABC', 'DEF'); // 'DEFABC'
RA.concatRight([4, 5, 6], [1, 2, 3]); //=> [1, 2, 3, 4, 5, 6]
RA.concatRight([], []); //=> []
Parameters:
Name Type Description
firstList Array | String

The first list

secondList Array | String

The second list

Returns:

A list consisting of the elements of secondList followed by the elements of firstList.

Type
Array | String

(static) curryRight(fn) → {function}

Source:
Since:
Signature:
  • Number => (* -> a) -> (* -> a)
Category:
  • List
See also:

Returns a curried equivalent of the provided function. This function is like curry, except that the provided arguments order is reversed.

Example
const concatStrings = (a, b, c) => a + b + c;
const concatStringsCurried = RA.curryRight(concatStrings);

concatStringCurried('a')('b')('c'); // => 'cba'
Parameters:
Name Type Description
fn function

The function to curry

Returns:

A new, curried function

Type
function

(static) curryRightN(length, fn) → {function}

Source:
Since:
Signature:
  • Number => (* -> a) -> (* -> a)
Category:
  • List
See also:

Returns a curried equivalent of the provided function, with the specified arity. This function is like curryN, except that the provided arguments order is reversed.

Example
const concatStrings = (a, b, c) => a + b + c;
const concatStringsCurried = RA.curryRightN(3, concatStrings);

concatStringCurried('a')('b')('c'); // => 'cba'
Parameters:
Name Type Description
length Number

The arity for the returned function

fn function

The function to curry

Returns:

A new, curried function

Type
function

(static) defaults(defaultOptions, options) → (non-null) {Object}

Source:
Since:
Signature:
  • DefaultOptions -> Options -> Defaults
          DefaultOptions = Object
          Options = Object
          Defaults = Object
Category:
  • Object
See also:

Set properties only if they don't exist. Useful for passing defaults. Basically this function is the alias of merge.

Example
RA.defaults({ 'a': 2, 'b': 2 })({ 'a': 1 }); //=> { 'a': 1, 'b': 2 }
Parameters:
Name Type Description
defaultOptions Object

The default options

options Object

The options passed

Returns:

Merged option object

Type
Object

(static) isArray(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is Array.

Example
RA.isArray([]); //=> true
RA.isArray(null); //=> false
RA.isArray({}); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isArrayLike(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Tests whether or not an object is similar to an array.

Example
RA.isArrayLike([]); //=> true
RA.isArrayLike(true); //=> false
RA.isArrayLike({}); //=> false
RA.isArrayLike({length: 10}); //=> false
RA.isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:

true if val has a numeric length property and extreme indices defined; false otherwise.

Type
Boolean

(static) isAsyncFunction(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is Async Function.

Example
RA.isAsyncFunction(async function test() { }); //=> true
RA.isAsyncFunction(null); //=> false
RA.isAsyncFunction(function test() { }); //=> false
RA.isAsyncFunction(() => {}); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isBoolean(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is Boolean.

Example
RA.isBoolean(false); //=> true
RA.isBoolean(true); //=> true
RA.isBoolean(null); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isDate(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if value is Date object.

Example
RA.isDate(new Date()); //=> true
RA.isDate('1997-07-16T19:20+01:00'); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isFinite(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks whether the passed value is a finite Number.

Example
RA.isFinite(Infinity); //=> false
RA.isFinite(NaN); //=> false
RA.isFinite(-Infinity); //=> false

RA.isFinite(0); // true
RA.isFinite(2e64); // true

RA.isFinite('0');  // => false
                   // would've been true with global isFinite('0')
RA.isFinite(null); // => false
                   // would've been true with global isFinite(null)
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isFunction(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is Function.

Example
RA.isFunction(function test() { }); //=> true
RA.isFunction(function* test() { }); //=> true
RA.isFunction(async function test() { }); //=> true
RA.isFunction(() => {}); //=> true
RA.isFunction(null); //=> false
RA.isFunction('abc'); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isGeneratorFunction(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is Generator Function.

Example
RA.isGeneratorFunction(function* test() { }); //=> true
RA.isGeneratorFunction(null); //=> false
RA.isGeneratorFunction(function test() { }); //=> false
RA.isGeneratorFunction(() => {}); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isInteger(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks whether the passed value is a an integer.

Example
RA.isInteger(0); //=> true
RA.isInteger(1); //=> true
RA.isInteger(-100000); //=> true

RA.isInteger(0.1);       //=> false
RA.isInteger(Math.PI);   //=> false

RA.isInteger(NaN);       //=> false
RA.isInteger(Infinity);  //=> false
RA.isInteger(-Infinity); //=> false
RA.isInteger('10');      //=> false
RA.isInteger(true);      //=> false
RA.isInteger(false);     //=> false
RA.isInteger([1]);       //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNaN(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks whether the passed value is NaN and its type is Number. It is a more robust version of the original, global isNaN().

Example
RA.isNaN(NaN); // => true
RA.isNaN(Number.NaN); // => true
RA.isNaN(0 / 0); // => true

// e.g. these would have been true with global isNaN().
RA.isNaN('NaN'); // => false
RA.isNaN(undefined); // => false
RA.isNaN({}); // => false
RA.isNaN('blabla'); // => false

RA.isNaN(true); // => false
RA.isNaN(null); // => false
RA.isNaN(37); // => false
RA.isNaN('37'); // => false
RA.isNaN('37.37'); // => false
RA.isNaN(''); // => false
RA.isNaN(' '); // => false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNilOrEmpty(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Returns true if the given value is its type's empty value, null or undefined.

Example
RA.isNilOrEmpty([1, 2, 3]); //=> false
RA.isNilOrEmpty([]); //=> true
RA.isNilOrEmpty(''); //=> true
RA.isNilOrEmpty(null); //=> true
RA.isNilOrEmpty(undefined): //=> true
RA.isNilOrEmpty({}); //=> true
RA.isNilOrEmpty({length: 0}); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotArray(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is complement of Array

Example
RA.isNotArray([]); //=> false
RA.isNotArray(null); //=> true
RA.isNotArray({}); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotArrayLike(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Tests whether or not an object is similar to an array.

Example
RA.isNotArrayLike([]); //=> false
RA.isNotArrayLike(true); //=> true
RA.isNotArrayLike({}); //=> true
RA.isNotArrayLike({length: 10}); //=> true
RA.isNotArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotAsyncFunction(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is complement of Async Function

Example
RA.isNotAsyncFunction(async function test() { }); //=> false
RA.isNotAsyncFunction(null); //=> true
RA.isNotAsyncFunction(function test() { }); //=> true
RA.isNotAsyncFunction(() => {}); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotBoolean(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is complement of Boolean.

Example
RA.isNotBoolean(false); //=> false
RA.isNotBoolean(true); //=> false
RA.isNotBoolean(null); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotDate(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if value is complement of Date object.

Example
RA.isNotDate(new Date()); //=> false
RA.isNotDate('1997-07-16T19:20+01:00'); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotEmpty(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Returns true if the given value is not its type's empty value; false otherwise.

Example
RA.isNotEmpty([1, 2, 3]); //=> true
RA.isNotEmpty([]); //=> false
RA.isNotEmpty(''); //=> false
RA.isNotEmpty(null); //=> true
RA.isNotEmpty(undefined): //=> true
RA.isNotEmpty({}); //=> false
RA.isNotEmpty({length: 0}); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotFinite(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks whether the passed value is complement of finite Number.

Example
RA.isNotFinite(Infinity); //=> true
RA.isNotFinite(NaN); //=> true
RA.isNotFinite(-Infinity); //=> true

RA.isNotFinite(0); // false
RA.isNotFinite(2e64); // false

RA.isNotFinite('0');  // => true
RA.isNotFinite(null); // => true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotFunction(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is complement of Function.

Example
RA.isNotFunction(function test() { }); //=> false
RA.isNotFunction(function* test() { }); //=> false
RA.isNotFunction(async function test() { }); //=> false
RA.isNotFunction(() => {}); //=> false
RA.isNotFunction(null); //=> true
RA.isNotFunction('abc'); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotGeneratorFunction(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is complement of Generator Function

Example
RA.isNotGeneratorFunction(function* test() { }); //=> false
RA.isNotGeneratorFunction(null); //=> true
RA.isNotGeneratorFunction(function test() { }); //=> true
RA.isNotGeneratorFunction(() => {}); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotInteger(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks whether the passed value is complement of an integer.

Example
RA.isNotInteger(0); //=> false
RA.isNotInteger(1); //=> false
RA.isNotInteger(-100000); //=> false

RA.isNotInteger(0.1);       //=> true
RA.isNotInteger(Math.PI);   //=> true

RA.isNotInteger(NaN);       //=> true
RA.isNotInteger(Infinity);  //=> true
RA.isNotInteger(-Infinity); //=> true
RA.isNotInteger('10');      //=> true
RA.isNotInteger(true);      //=> true
RA.isNotInteger(false);     //=> true
RA.isNotInteger([1]);       //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotNaN(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks whether the passed value is complement of NaN and its type is not Number.

Example
RA.isNotNaN(NaN); // => false
RA.isNotNaN(Number.NaN); // => false
RA.isNotNaN(0 / 0); // => false

RA.isNotNaN('NaN'); // => true
RA.isNotNaN(undefined); // => true
RA.isNotNaN({}); // => true
RA.isNotNaN('blabla'); // => true

RA.isNotNaN(true); // => true
RA.isNotNaN(null); // => true
RA.isNotNaN(37); // => true
RA.isNotNaN('37'); // => true
RA.isNotNaN('37.37'); // => true
RA.isNotNaN(''); // => true
RA.isNotNaN(' '); // => true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotNil(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is complement of null or undefined.

Example
RA.isNotNil(null); //=> false
RA.isNotNil(undefined); //=> false
RA.isNotNil(0); //=> true
RA.isNotNil([]); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotNull(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is complement of null.

Example
RA.isNotNull(1); //=> true
RA.isNotNull(undefined); //=> true
RA.isNotNull(null); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotNumber(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if value is a complement of Number primitive or object.

Example
RA.isNotNumber(5); // => false
RA.isNotNumber(Number.MAX_VALUE); // => false
RA.isNotNumber(-Infinity); // => false
RA.isNotNumber('5'); // => true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotString(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is complement of String.

Example
RA.isNotString('abc'); //=> false
RA.isNotString(1); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNotUndefined(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is complement undefined.

Example
RA.isNotUndefined(1); //=> true
RA.isNotUndefined(undefined); //=> false
RA.isNotUndefined(null); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNull(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is null.

Example
RA.isNull(1); //=> false
RA.isNull(undefined); //=> false
RA.isNull(null); //=> true
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isNumber(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if value is a Number primitive or object

Example
RA.isNumber(5); // => true
RA.isNumber(Number.MAX_VALUE); // => true
RA.isNumber(-Infinity); // => true
RA.isNumber('5'); // => false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isString(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is String.

Example
RA.isString('abc'); //=> true
RA.isString(1); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isUndefined(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if input value is undefined.

Example
RA.isUndefined(1); //=> false
RA.isUndefined(undefined); //=> true
RA.isUndefined(null); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) isValidDate(val) → {Boolean}

Source:
Since:
Signature:
  • * -> Boolean
Category:
  • Type
See also:

Checks if value is valid Date object.

Example
RA.isValidDate(new Date()); //=> true
RA.isValidDate(new Date('a')); //=> false
Parameters:
Name Type Description
val *

The value to test

Returns:
Type
Boolean

(static) liftF(fn) → {function}

Source:
Since:
Signature:
  • Apply a => (a... -> a) -> (a... -> a)
Category:
  • Function
See also:

"lifts" a function to be the specified arity, so that it may "map over" objects that satisfy the fantasy land Apply spec of algebraic structures.

Lifting is specific for scalaz and functional java implementations. Old version of fantasy land spec were not compatible with this approach, but as of fantasy land 1.0.0 Apply spec also adopted this approach.

This function acts as interop for ramda <= 0.23.0 and monet.js.

More info here.

Example
const { Maybe } = require('monet');

const add3 = (a, b, c) => a + b + c;
const madd3 = RA.liftF(add3);

madd3(Maybe.Some(10), Maybe.Some(15), Maybe.Some(17)); //=> Maybe.Some(42)
madd3(Maybe.Some(10), Maybe.Nothing(), Maybe.Some(17)); //=> Maybe.Nothing()
Parameters:
Name Type Description
fn function

The function to lift into higher context

Returns:

The lifted function

Type
function

(static) liftFN(arity, fn) → {function}

Source:
Since:
Signature:
  • Apply a => Number -> (a... -> a) -> (a... -> a)
Category:
  • Function
See also:

"lifts" a function to be the specified arity, so that it may "map over" objects that satisfy the fantasy land Apply spec of algebraic structures.

Lifting is specific for scalaz and functional java implementations. Old version of fantasy land spec were not compatible with this approach, but as of fantasy land 1.0.0 Apply spec also adopted this approach.

This function acts as interop for ramda <= 0.23.0 and monet.js.

More info here.

Example
const { Maybe } = require('monet');

const add3 = (a, b, c) => a + b + c;
const madd3 = RA.liftFN(3, add3);

madd3(Maybe.Some(10), Maybe.Some(15), Maybe.Some(17)); //=> Maybe.Some(42)
madd3(Maybe.Some(10), Maybe.Nothing(), Maybe.Some(17)); //=> Maybe.Nothing()
Parameters:
Name Type Description
arity Number

The arity of the lifter function

fn function

The function to lift into higher context

Returns:

The lifted function

Type
function

(static) list(…items) → {Array}

Source:
Since:
Signature:
  • a... -> [a...]
Category:
  • List
See also:

Creates a list from from arguments.

Example
RA.list('a', 'b', 'c'); //=> ['a', 'b', 'c']
Parameters:
Name Type Attributes Description
items * <repeatable>

The items of the feature list

Returns:

New list created from items

Type
Array

(static) noop() → {undefined}

Source:
Since:
Signature:
  • ... -> undefined
Category:
  • Function

A function that performs no operations.

Example
RA.noop(); //=> undefined
RA.noop(1, 2, 3); //=> undefined
Returns:
Type
undefined

(static) paths(ps, obj) → {Array}

Source:
Since:
Signature:
  • [[k]] -> {k: v} - [v]
Category:
  • List
See also:

Acts as multiple path: arrays of paths in, array of values out. Preserves order.

Example
const obj = {
  a: { b: { c: 1 } },
  x: 2,
};

RA.paths([['a', 'b', 'c'], ['x']], obj); //=> [1, 2]
Parameters:
Name Type Description
ps Array

The property paths to fetch

obj Object

The object to query

Returns:

The corresponding values or partially applied function

Type
Array

(static) pickIndexes(indexes, list) → {Array}

Source:
Since:
Signature:
  • [Number] -> [a] -> [a]
Category:
  • List
See also:

Picks values from list by indexes.

Example
RA.pickIndexes([0, 2], ['a', 'b', 'c']); //=> ['a', 'c']
Parameters:
Name Type Description
indexes Array

The indexes to pick

list Array

The list to pick values from

Returns:

New array containing only values at indexes

Type
Array

(static) renameKeys(keysMapnon-null, objnon-null) → (non-null) {Object}

Source:
Since:
Signature:
  • {a: b} -> {a: *} -> {b: *}
Category:
  • Object
See also:

Creates a new object with the own properties of the provided object, but the keys renamed according to the keysMap object as {oldKey: newKey}. When some key is not found in the keysMap, then it's passed as-is.

Keep in mind that in the case of keys conflict is behaviour undefined and the result may vary between various JS engines!

Example
const input = { firstName: 'Elisia', age: 22, type: 'human' };

RA.renameKeys({ firstName: 'name', type: 'kind', foo: 'bar' })(input);
//=> { name: 'Elisia', age: 22, kind: 'human' }
Parameters:
Name Type Description
keysMap Object
obj Object
Returns:

New object with renamed keys

Type
Object

(static) renameKeysWith(fn, objnon-null) → (non-null) {Object}

Source:
Since:
Signature:
  • (a -> b) -> {a: *} -> {b: *}
Category:
  • Object
See also:

Creates a new object with the own properties of the provided object, but the keys renamed according to logic of renaming function.

Keep in mind that in the case of keys conflict is behaviour undefined and the result may vary between various JS engines!

Example
RA.renameKeysWith(R.concat('a'), { A: 1, B: 2, C: 3 }) //=> { aA: 1, aB: 2, aC: 3 }
Parameters:
Name Type Description
fn function

Function that renames the keys

obj Object

Provided object

Returns:

New object with renamed keys

Type
Object

(static) stubNull() → {null}

Source:
Since:
Signature:
  • ... -> null
Category:
  • Function

A function that returns null.

Example
RA.stubNull(); //=> null
RA.stubNull(1, 2, 3); //=> null
Returns:
Type
null

(static) stubUndefined() → {undefined}

Source:
Since:
Signature:
  • ... -> undefined
Category:
  • Function

A function that returns undefined.

Example
RA.stubUndefined(); //=> undefined
RA.stubUndefined(1, 2, 3); //=> undefined
Returns:
Type
undefined

(static) weave(fn, config) → {function}

Source:
Since:
Signature:
  • (*... -> *) -> * -> (*... -> *)
Category:
  • Function

Weaves a configuration into function returning the runnable monad like Reader or Free. This allows us to pre-bind the configuration in advance and use the weaved function without need to explicitly pass the configuration on every call.

Example
const { Reader: reader } = require('monet');

const log = value => reader(
  config => config.log(value)
);

// no weaving
log('test').run(console); //=> prints 'test'

// weaving
const wlog = RA.weave(log, console);
wlog('test'); //=> prints 'test'
Parameters:
Name Type Description
fn function

The function to weave

config *

The configuration to weave into fn

Returns:

Auto-curried weaved function

Type
function

(static) weaveLazy(fn, configAccessor) → {function}

Source:
Since:
Signature:
  • (*... -> *) -> (* -> *) -> (*... -> *)
Category:
  • Function

Weaves a configuration into function returning the runnable monad like Reader or Free. This allows us to pre-bind the configuration in advance and use the weaved function without need to explicitly pass the configuration on every call.

Example
const { Reader: reader } = require('monet');

const log = value => reader(
  config => config.log(value)
);

const consoleAccessor = R.always(console);

// no weaving
log('test').run(console); //=> prints 'test'

// weaving
const wlog = RA.weaveLazy(log, consoleAccessor);
wlog('test'); //=> prints 'test'
Parameters:
Name Type Description
fn function

The function to weave

configAccessor function

The function that returns the configuration object

Returns:

Auto-curried weaved function

Type
function