Skip to main content
Module

x/ramda/source/empty.js

:ram: Practical functional Javascript
Latest
File
import _curry1 from './internal/_curry1.js';import _isArguments from './internal/_isArguments.js';import _isArray from './internal/_isArray.js';import _isObject from './internal/_isObject.js';import _isString from './internal/_isString.js';import _isTypedArray from './internal/_isTypedArray.js';

/** * Returns the empty value of its argument's type. Ramda defines the empty * value of Array (`[]`), Object (`{}`), String (`''`), * TypedArray (`Uint8Array []`, `Float32Array []`, etc), and Arguments. Other * types are supported if they define `<Type>.empty`, * `<Type>.prototype.empty` or implement the * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid). * * Dispatches to the `empty` method of the first argument, if present. * * @func * @memberOf R * @since v0.3.0 * @category Function * @sig a -> a * @param {*} x * @return {*} * @example * * R.empty(Just(42)); //=> Nothing() * R.empty([1, 2, 3]); //=> [] * R.empty('unicorns'); //=> '' * R.empty({x: 1, y: 2}); //=> {} * R.empty(Uint8Array.from('123')); //=> Uint8Array [] */var empty = _curry1(function empty(x) { return ( (x != null && typeof x['fantasy-land/empty'] === 'function') ? x['fantasy-land/empty']() : (x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function') ? x.constructor['fantasy-land/empty']() : (x != null && typeof x.empty === 'function') ? x.empty() : (x != null && x.constructor != null && typeof x.constructor.empty === 'function') ? x.constructor.empty() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments(x) ? (function() { return arguments; }()) : _isTypedArray(x) ? x.constructor.from('') : void 0 // else );});export default empty;