function map( fcn, thisArg ) {
			var out;
			var i;
			if ( this !== tuple ) { // eslint-disable-line no-invalid-this
				throw new TypeError( 'invalid invocation. `this` is not host tuple.' );
			}
			if ( !isFunction( fcn ) ) {
				throw new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', fcn ) );
			}
			out = namedtypedtuple( dtype );
			for ( i = 0; i < nfields; i++ ) {
				out[ i ] = fcn.call( thisArg, tuple[ i ], i, fields[ indices[i] ], tuple );
			}
			return out;
		}
Maps each tuple element to an element in a new tuple.

## Notes

-   The returned tuple has the same data type as the host tuple.

@private
@memberof tuple
@param {Function} fcn - map function
@param {*} [thisArg] - execution context
@throws {TypeError} `this` must be the host tuple
@throws {TypeError} first argument must be a function
@returns {TypedArray} new tuple