uncurry

    Transform a curried function into a function invoked with multiple arguments.

    Usage

    var uncurry = require( '@stdlib/utils/uncurry' );
    

    uncurry( fcn[, arity][, thisArg] )

    Transforms a curried function into a function invoked with multiple arguments.

    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.

    function add( x ) {
        return function add( y ) {
            return x + y;
        };
    }
    
    var fcn = uncurry( add, 2 );
    
    var sum = fcn( 9 );
    // throws <Error>
    

    To specify an execution context, provide a thisArg argument.

    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.

    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 <Error>
    

    Examples

    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