function mapRight( arr, fcn, thisArg ) {
	var out;
	if ( !isFunction( fcn ) ) {
		throw new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );
	}
	if ( isndarrayLike( arr ) ) { // note: assertion order matters here, as an ndarray-like object is also array-like
		arr = ndarraylike2object( arr );
		out = ndzeros( arr.shape, {
			'dtype': 'generic',
			'order': arr.order
		});
		ndarrayFcn( arr, ndarraylike2object( out ), fcn, thisArg );
		return out;
	}
	if ( isArrayLikeObject( arr ) ) {
		out = zeros( arr.length );
		arrayFcn( arraylike2object( arr ), arraylike2object( out ), fcn, thisArg ); // eslint-disable-line max-len
		return out;
	}
	throw new TypeError( format( 'invalid argument. First argument must be an array-like object or an ndarray. Value: `%s`.', arr ) );
}
Applies a function to each element in an array and assigns the result to an element in a new array, iterating from right to left.

## Notes

-   The applied function is provided the following arguments:

    -   **value**: array element.
    -   **index**: element index.
    -   **arr**: input array.

@param {(ArrayLikeObject|ndarray)} arr - input array
@param {Function} fcn - function to apply
@param {*} [thisArg] - function execution context
@throws {TypeError} first argument must be an array-like object or an ndarray
@throws {TypeError} second argument must be a function
@returns {(Array|ndarray)} output array

@example
var naryFunction = require( '@stdlib/utils/nary-function' );
var abs = require( '@stdlib/math/base/special/abs' );

var arr = [ -1, -2, -3, -4, -5, -6 ];

var out = mapRight( arr, naryFunction( abs, 1 ) );
// returns [ 1, 2, 3, 4, 5, 6 ]

@example
var naryFunction = require( '@stdlib/utils/nary-function' );
var abs = require( '@stdlib/math/base/special/abs' );
var array = require( '@stdlib/ndarray/array' );

var opts = {
    'dtype': 'generic'
};
var arr = array( [ [ -1, -2, -3 ], [ -4, -5, -6 ] ], opts );

var out = mapRight( arr, naryFunction( abs, 1 ) );
// returns <ndarray>

var data = out.data;
// returns [ 1, 2, 3, 4, 5, 6 ]