# uncurryRight > Transform a curried function into a function invoked with multiple arguments.
## Usage ```javascript var uncurryRight = require( '@stdlib/utils/uncurry-right' ); ``` #### uncurryRight( fcn\[, arity]\[, thisArg] ) Transforms a curried function into a function invoked with multiple arguments. ```javascript function add( y ) { return function add( x ) { return x + y; }; } var fcn = uncurryRight( add ); var sum = fcn( 3, 2 ); // returns 5 ``` To enforce a fixed number of parameters, provide an `arity` argument. ```javascript function add( y ) { return function add( x ) { return x + y; }; } var fcn = uncurryRight( add, 2 ); var sum = fcn( 9 ); // throws ``` To specify an execution context, provide a `thisArg` argument. ```javascript function addY( y ) { this.y = y; return addX; } function addX( x ) { return x + this.y; } var fcn = uncurryRight( addY, {} ); var sum = fcn( 3, 2 ); // returns 5 ``` The function supports providing both an `arity` and execution context. ```javascript function addY( y ) { this.y = y; return addX; } function addX( x ) { return x + this.y; } var fcn = uncurryRight( addY, 2, {} ); var sum = fcn( 3, 2 ); // returns 5 sum = fcn( 4 ); // throws ```
## Notes - The difference between this function and [`uncurry`][@stdlib/utils/uncurry] is the order in which arguments are applied. This function applies arguments starting from the right.
## Examples ```javascript var fromCodePoint = require( '@stdlib/string/from-code-point' ); var curryRight = require( '@stdlib/utils/curry-right' ); var uncurryRight = require( '@stdlib/utils/uncurry-right' ); var uncurried; var curried; var abcs; var out; var a; var i; function concat() { var len; var out; var i; len = arguments.length; out = ''; for ( i = 0; i < len; i++ ) { out += arguments[ i ]; if ( i < len-1 ) { out += ','; } } return out; } // Character codes: a = 97; abcs = new Array( 26 ); for ( i = 0; i < abcs.length; i++ ) { abcs[ i ] = fromCodePoint( a + i ); } out = concat.apply( null, abcs ); // returns 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z' // Transform `concat` into a right curried function: curried = curryRight( concat, 26 ); out = curried; for ( i = abcs.length-1; i >= 0; i-- ) { out = out( abcs[ i ] ); } console.log( out ); // => 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z' // Uncurry a right curried function: uncurried = uncurryRight( curried ); out = uncurried.apply( null, abcs ); // returns 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z' ```