The API documentation is here.
Install it with
npm install lamb
Require it in node.js:
var _ = ;
It's useful to alias it to have a shorter symbol, like
_, as I did above and throughout the documentation: it's cleaner and the
lamb object itself can be used as a placeholder argument in partial application.
In a browser, simply include the version you want from the
Doing so a
lamb variable will be created in the global object.
The source map for the minified file is in the same
The URLs above will retrieve the latest version, but you can target a specific one:
Please note that Lamb is served by jsDelivr since version 0.42.0.
You can try it right now in your browser, too.
Lamb uses semantic versioning and please be aware that, as long as the major version is
bump in the minor version could involve a breaking change in the API.
You can check the recent or the full changelog to see if your code is affected.
Are your wheels rounder? Not at all, but I do try my best to add better suspension; and you do realise that you're reading a guy talking to himself, don't you?
Why you say "to help embracing functional programming"? Is it for beginners? No, it's a utility library for everyone; beginners included, though. Lamb embraces functional concepts and encourages users to take advantage of them, but without forcing anyone to change his style. Experienced functional programmers will feel immediately at home, and beginners will discover that the library is able to adapt to them while their knowledge grows.
Why ECMAScript 5? Because this is simply me tidying up some old code, and will hopefully be my goodbye to ES5 before fully diving into the world of transpilers.
Are there plans for the future? Absolutely yes: this isn't a complete work at all, only a first public release. I need better documentation and examples for starters, and I also want to add a bunch of other functions and concepts into the mix.
I really like Lamb's logo: are you the designer? I like it a lot too and, no, it isn't my doing: the author is a very talented designer who never signs his works by choice and doesn't want to be credited for it. Other than being eternally grateful, the least I can do is offer my services as a middleman and put you in touch if you need his craft.
Why "Lamb"? See the main header: because it's docile like a lamb. Lamb adapts to you without needing you to adapt.
You can also check the full changelog.
v0.51.0 - 2017/02/20
tapArgsisn't variadic anymore and accepts an array of "tappers" as the second parameter
conditionis no longer optional
caseto quickly build cases for
v0.50.0 - 2017/02/08
areSVZ. The old names are now used for curried version of those functions
lte. The old names are now used for right curried versions of these functions.
pipenow build a function throwing an exception if they are called without arguments
addis now used as a curried version of
deductas a right curried version of
multiplyByas a curried version of
divideByas a right curried version of
v0.49.0 - 2017/01/24
aritizenow will simply convert its
arityparameter to integer, instead of giving it a special meaning when is
skipKeysnow convert to string every value in the
hasKeyValuenow correctly returns
falsewhen searching for an
undefinedvalue in a non-existent property
hasPathValuewill no longer see valid paths when a negative array index is out of bounds
hasPathValueand "pick" and "skip" functions
updatePathto check negative array indexes that are out of bounds
v0.48.0 - 2017/01/10
sliceisn't a generic anymore to ensure that dense arrays are returned and has no optional parameters
nils received as the
valuesparameter as empty arrays
v0.47.0 - 2016/12/16
clampnow converts to number its arguments and returns
minis greater than
applyas a left-curried version of