import { bind, curryN } from 'ramda';
import isFunction from './isFunction';
import ponyfill from './internal/ponyfills/Number.isFinite';
export const isFinitePonyfill = curryN(1, ponyfill);
/**
* Checks whether the passed value is a finite `Number`.
*
* @func isFinite
* @memberOf RA
* @since {@link https://char0n.github.io/ramda-adjunct/0.7.0|v0.7.0}
* @category Type
* @sig * -> Boolean
* @param {*} val The value to test
* @return {boolean}
* @see {@link RA.isNotFinite|isNotFinite}
* @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)
*/
const _isFinite = isFunction(Number.isFinite)
? curryN(1, bind(Number.isFinite, Number))
: isFinitePonyfill;
export default _isFinite;