Neanderthals Paint Mammals

    @ngard/tiny-curry

    1.0.1 • Public • Published

    tiny-curry

    source bundle size build status license

    A minimal utility similar to lodash.curry. For when every byte counts! Returns a series of functions that consume the original function's arguments one at a time until the original function's arity (or the passed arity) is met.


    lodash.curry: bundle size
    tiny-curry: bundle size


    Install

    npm install @ngard/tiny-curry

    Syntax

    curry(/* function [, arity] */);

    Parameters

    function - A function that will be called once the parameters are gathered through currying. arity - The number of curry functions to create before returning the result of the passed function called with the arguments. Defaults to function.length.

    Returns

    A series of functions that each take a single argument and apply those arguments to the supplied function once they have all been gathered. Each intermediate function also has a value method that may be invoked to apply the currently gathered arguments to the function.

    Examples

    import { curry } from '@ngard/tiny-curry';
    
    function add(a, b) { return a + b; }
    // add.length = 2, the number of arguments it expects
    
    const curriedAdd = curry(add);
    const addTwo = curriedAdd(2);
    
    console.log(addTwo(5)); // logs '7'
    import { curry } from '@ngard/tiny-curry';
    
    function greet(name, title = 'Your Lordship') {
      return `Good day,  ${name}, ${title}`;
    }
    // greet.length = 1, because defaulted arguments are not 'expected'
    
    const curriedGreet = curry(greet, 2);
    const greetBob = curriedGreet('Bob');
    
    console.log(greetBob('my friend')); // logs 'Good day, Bob, my friend'
    console.log(greetBob()); // logs 'Good day, Bob, Your Lordship'
    import { curry } from '@ngard/tiny-curry';
    
    function sum(...numbers) {
      return numbers.reduce((total, number) => total + number);
    }
    // sum.length = 0, because rest arguments are not 'expected'
    
    const curriedSum = curry(sum, Infinity);
    
    // call `.value()` on an infinitely curried function to call the
    // original function with the gathered arguments
    const total = curriedSum(1)(2)(3)(4).value();
    
    console.log(total); // logs '10'

    Install

    npm i @ngard/tiny-curry

    DownloadsWeekly Downloads

    1

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    17.3 kB

    Total Files

    7

    Last publish

    Collaborators

    • ngard