# uncurry > Transform a curried function into a function invoked with multiple arguments.
## Usage ```javascript var uncurry = require( '@stdlib/utils/uncurry' ); ``` #### uncurry( fcn\[, arity]\[, thisArg] ) Transforms a curried function into a function invoked with multiple arguments. ```javascript function add( x ) { return function add( y ) { return x + y; }; } var fcn = uncurry( add ); var sum = fcn( 2, 3 ); // returns 5 ``` To enforce a fixed number of parameters, provide an `arity` argument. ```javascript function add( x ) { return function add( y ) { return x + y; }; } var fcn = uncurry( add, 2 ); var sum = fcn( 9 ); // throws ``` To specify an execution context, provide a `thisArg` argument. ```javascript function addX( x ) { this.x = x; return addY; } function addY( y ) { return this.x + y; } var fcn = uncurry( addX, {} ); var sum = fcn( 2, 3 ); // returns 5 ``` The function supports providing both an `arity` and execution context. ```javascript function addX( x ) { this.x = x; return addY; } function addY( y ) { return this.x + y; } var fcn = uncurry( addX, 2, {} ); var sum = fcn( 2, 3 ); // returns 5 sum = fcn( 4 ); // throws ```
## Examples ```javascript var curry = require( '@stdlib/utils/curry' ); var uncurry = require( '@stdlib/utils/uncurry' ); var uncurried; var curried; var bool; var out; var i; function add( x, y, z, w, t, s ) { return x + y + z + w + t + s; } out = add( 0, 10, 20, 30, 40, 50 ); // returns 150 // Transform `add` into a curried function: curried = curry( add ); out = curried; for ( i = 0; i < add.length; i++ ) { out = out( i*10 ); } bool = ( out === 150 ); // returns true // Uncurry a curried function: uncurried = uncurry( curried ); out = uncurried( 0, 10, 20, 30, 40, 50 ); // returns 150 ```