UNPKG

lambda-chop

Version:

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

20 lines (19 loc) 723 B
var curry = λ fn a b -> fn(a, b); var curry3 = λ fn a b c -> fn(a, b, c); var curry4 = λ fn a b c d -> fn(a, b, c, d); var uncurry = λ fn (a, b) -> fn(a)(b); var uncurry3 = λ fn (a, b, c) -> fn(a)(b)(c); var uncurry4 = λ fn (a, b, c, d) -> fn(a)(b)(c)(d); var unary = λ fn x -> fn(x); var arity2 = λ fn (x, y) -> fn(x, y); var arity3 = λ fn (x, y, z) -> fn(x, y, z); var flip = λ fn (x, y) -> fn(y, x); var always = λ x y -> x; var get = λ k o -> o[k]; var map = λ(fn, xs) -> xs.map(unary(fn)); var filter = λ(fn, xs) -> xs.filter(unary(fn)); var reduce = λ(fn, xs, acc) -> xs.reduce(arity2(fn), acc); var head = λ[#[0]]; var tail = λ[#.slice(1)]; var cons = λ[[#].concat(#)]; var snoc = λ[#.concat(#)];