Common javascript decorators and combinators I use all the time. While I love libraries like Ramda this is a lightweight poor man's alternative.
n=f.length -> f: Function -> * -> *
Curries function f
allowing arguments to be received piecemeal. Can be set to a specific arity,
defaults to the arity of the curried function. Works for class constructors as well.
(f: Function, strict=true) -> * -> null|*
Returns a function that returns null
if any of its arguments are null
or undefined
,
otherwise returns the result of applying the function to the arguments. If the passed-in function
has an arity of 0 it may be successfully called with no arguments. If strict is set to false the
pre-emptive null is only returned if all the arguments are null
or undefined
.
(delay: Integer, immediate=false, f: Function) -> * -> Integer
Delay in milliseconds. Returns the timer ID so caller can cancel. The optional boolean parameter is whether the function fires on the leading edge or trailing edge.
delay: Integer -> f: Function -> * -> Integer
Throttles passed in function. Returns the setTimeout
handle so caller can cancel.
f: Function -> * -> Promise<*>
Takes a function that accepts a nodejs-style (error-first) callback and returns a function that returns a Promise of the result instead. If the callback receives multiple non-error parameters then it will return a Promise of an array of the results.
f: Function -> args: Array<*> -> *
Takes a function that takes positional arguments and returns a function that takes an Array of arguments.
class: Class -> args: Array<*> -> Object
Allows a class constructor that takes positional arguments to be given an Array instead. Useful for mapping a constructor over an Array of initialization data.
n: Integer -> f: Function -> * -> *
Applies only the first n
received arguments to f
. Useful for e.g. mapping parseInt
over an
Array of Strings: [1, 2, 3] === ["1", "2", "3"].map(d.bindArity(1, parseInt))
.
A partial application of bindArity
and 1.
(f: Function, g: Function ...) -> * -> *
Forward function composition. All functions except the first should be unary.
f: Function -> * -> *
Uses bounded stack space to run thunk-returning tail-recursive functions.
f: Function -> * -> *
Caches the result of function calls to avoid re-computation.
f: Function -> Promise<*> -> Promise<*>
Takes a function f
from a -> b
or a -> Promise b
and returns a function Promise a -> Promise b
.