A functional, curried, and pure reimplementation of the full ECMAScript API.
LambdaJS is a functional programming library that reimplements the entire ECMAScript API as pure, curried functions with data-last parameters. It solves the problem of JavaScript's mutable and object-oriented built-in methods by providing immutable, composable alternatives that enable point-free style programming.
JavaScript developers interested in functional programming, immutability, and declarative code, particularly those building applications where side effects and mutation are concerns.
Developers choose LambdaJS for its strict adherence to functional principles—pure functions, automatic currying, and data-last parameters—which enhance code predictability, testability, and composability compared to native JavaScript methods.
LambdaJS provides a functional programming interface to the entire ECMAScript API, transforming native JavaScript methods into pure, curried functions with data-last parameters. This enables point-free style programming, eliminates side effects, and enhances composability.
method(arg, data) instead of data.method(arg), enabling easier partial application.reverse(array) returns a new array instead of mutating the original.indexOf and indexOf_) for clarity and consistency.expose() method to mix functions into the global scope for convenience.LambdaJS embraces functional programming principles to make JavaScript's built-in API more predictable, composable, and free of side effects, promoting a declarative coding style.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
All functions are side-effect free; for example, `reverse(array)` returns a new array instead of mutating the original, as demonstrated in the README with the users array example.
Every function is curried, enabling point-free style programming, such as composing `toUpperCase` and `replace` without temporary variables, shown in the motivation section.
Based on the standard JavaScript API, so functions like `indexOf` and `replace` work similarly, reducing the learning curve for existing developers, as outlined in the key features.
Includes an `expose()` method to mix functions into the global scope, making it easy to use in browser environments without constant imports, per the usage instructions.
Wrapping native JavaScript methods into pure, curried functions can introduce runtime overhead, which might be significant in performance-sensitive applications, as suggested by the roadmap's mention of using fast.js for optimization.
The project's roadmap mentions potential integration with polyfills or fast.js, indicating it may not cover all ECMAScript features or keep pace with JavaScript evolution, requiring additional dependencies.
Using `expose()` to mix functions into the global namespace can lead to conflicts with other libraries or code, especially in large applications, as noted in the usage section without built-in conflict resolution.