Sweet.js macros for lambdas with currying, bound functions, and placeholders.
JavaScript
Switch branches/tags
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
macros
src
test Add shorthand property lambdas May 3, 2014
.gitignore
CHANGELOG.md
Gruntfile.js
LICENSE
README.md
examples.js Add example files. Nov 28, 2013
package.json

README.md

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