lambdax

    1.0.7 • Public • Published

    lambdax

    lambdax is an small module that allows you to implement partial application and build lambda expressions.

    Install

    • npm
    npm install --save lambdax
    • bower
    bower install --save lambdax

    Usage

    lambdax exposes two functions: partial() and negate();

    var partial = require('../lambdax').partial;
    var negate = require('../lambdax').negate;

    partial()

    • partial() simple use:
    function sum(a, b, c) {
      return a + b + c;
    }
    var sumPlus15 = partial(sum, 15);
    sumPlus15(25, 20); // => 60
    • partial() simple use passing context and arguments:
     
    function getColeguesNamesFromPeople(people) {
      var _self = this;
      return people.reduce(function (colegues, person) {
        if (person.occupation === _self.occupation) {
          colegues.push(person.firstName);
        }
     
        return colegues;
      }, []);
    }
     
    var getJohnColeguesNamesFromPeople = partial(
      john, // context
      getJohnColeguesNamesFromPeople,
    );
     
    getJohnColeguesNamesFromPeople(people);
    • partial() use as a builder:
    var findBackendDeveloper = partial()
      .expression(function () {
        return this.reduce(function (backendDevelopers, person) {
          if (person.occupation === 'Backend Developer') {
            backendDevelopers.push(person);
          }
     
          return backendDevelopers;
        }, []);
      })
      .context(people)
      .build();
     
    findBackendDeveloper();

    negate()

    • negate() simple use
    var f = negate(function () { return true });
    f() // => false.
    • negate() simple use passing context and arguments:
    var minAge = 18;
    var maxAge = 30;
    var isAgeNotInRange = negate(
      john, // context
      function (minAge, maxAge) {
        return this.age >= minAge && this.age <= maxAge;
      },
      minAge
      // we could've passed maxAge too,
      // but we didn't just to demonstrate that can pass it latter
    );
     
    isAgeNotInRange(maxAge);
    • negate() use as a builder:
    var isNotAgeInRange = negate()
      .expression(function (minAge, maxAge) {
        return this.age >= minAge && this.age <= maxAge;
      })
      .context(john)
      .argument(18)
      .argument(30)
      .build();
     
    isNotAgeInRange();

    Note: see test folder for more examples.

    Install

    npm i lambdax

    DownloadsWeekly Downloads

    0

    Version

    1.0.7

    License

    MIT

    Last publish

    Collaborators

    • avatar