Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

lambda-chop

natefaubion21MIT0.1.5

Sweet.js macros for lambdas with currying, bound functions, and placeholders.

lambda, lambdas, curry, currying, partial, partials, macro, macros, sweet-macros

readme

lambda-chop

Sweet.js macros for lambdas with currying, bound functions, and placeholders.

Install

npm install -g sweet.js
npm install lambda-chop
sjs -m lambda-chop/macros myfile.js

Features

Lambda-chop provides a macro λ which you can use to create terse, 'stabby' lambdas, much like CoffeeScipt and ES6, but with some extra features:

  • -> for unbound functions
  • => for bound functions using Function::bind
  • Tupled arguments
  • Curried arguments
  • Partials with placeholders
  • Shorthand property lambdas

Examples

// Create unbound functions
var add = λ(x, y) -> x + y;
add(1, 2) === 3;

// Create bound functions
DB.getResource('foo', λ(err, resp) => {
  ...
});

// Curry functions by leaving off the tupled arguments
var always = λ x y -> x;
always(42)(12) === 42;

// Mix and match for multiple argument lists
var nonsense = λ(x, y)(s, t) f -> 42;

// Placeholders using square brackets and `#`
var str = λ[#.toString()];
var sub = λ[# - #];
sub(2, 1) === 1;

// Shorthand property lambdas
var names = arr.map(λ.name);

Placeholder partials are never curried or bound, and are always expressions.

Can I Use Something Other Than λ?

Yes! Not everyone likes it or wants to type it. Lambda-chop provides aliases by using a different module to compile your files.

# Use `fun` instead of `λ`
sjs -m lambda-chop/macros/fun myfile.js

Available aliases are:

  • fn
  • fun
  • func
  • lam

Author

Nathan Faubion (@natefaubion)

License

MIT

changelog

0.1.5 (2014-5-3)

  • Shorthand property lambdas

0.1.4 (2014-1-11)

  • Update for sweet.js 0.4.x

0.1.3 (2013-12-15)

  • Added fn and func aliases.

0.1.2 (2013-12-9)

  • Update for sweet.js 0.3.x

0.1.1 (2013-11-15)

  • Multiple argument lists

0.1.0 (2013-11-13)

  • Initial release