import { both, complement, curryN } from 'ramda';
import isInteger from './isInteger';
import isNegative from './isNegative';
/**
* Checks if value is a natural number.
* Natural numbers correspond to all non-negative integers and 0.
*
* @func isNaturalNumber
* @memberOf RA
* @since {@link https://char0n.github.io/ramda-adjunct/2.29.0|v2.29.0}
* @category Type
* @sig * -> Boolean
* @param {*} val The value to test
* @return {boolean}
* @example
*
* RA.isNaturalNumber(5); // => true
* RA.isNaturalNumber(Number.MAX_VALUE); // => true
* RA.isNaturalNumber(0); // => true
* RA.isNaturalNumber(-1); // => false
* RA.isNaturalNumber(0.9); // => false
*/
const isNaturalNumber = curryN(1, both(isInteger, complement(isNegative)));
export default isNaturalNumber;