Displaying 1 to 13 from 13 results

streamjs - Lazy Object Streaming Pipeline for JavaScript

  •    Javascript

Stream.js is a lightweight (2.6 KB minified, gzipped), intensely tested (700+ assertions, 97% coverage) functional programming library for operating upon collections of in-memory data. It requires EcmaScript 5+, has built-in support for ES6 features and works in all current browsers, Node.js and Java 8 Nashorn. Before explaining how Stream.js works in detail, here's a few real world code samples.

Immutable-js - Immutable persistent data collections for Javascript which increase efficiency and simplicity

  •    Javascript

Immutable data cannot be changed once created, leading to much simpler application development, no defensive copying, and enabling advanced memoization and change detection techniques with simple logic. Persistent data presents a mutative API which does not update the data in-place, but instead always yields new updated data.

cloe - Cloe programming language

  •    Go

Cloe is the timeless functional programming language. It aims to be simple and practical. Go 1.8+ is required.




Nspl - Non-standard PHP library - functional primitives toolbox and more

  •    PHP

You can see more examples in the library reference below or here. This is documentation for the dev version 1.3.*-dev which contains the latest changes. For the version 1.2 (last stable version) documentation click here.

iterum - Handling iterables like lazy arrays.

  •    Javascript

iterum library provides a class for handling iterable transformations inspired in Array methods and lodash/fp functions. This library also supplies combinatorial functions like permutations, combinations, variations, product, power and powerSet that has a high computational cost but this library is able to support taking advantage of lazy evaluation.Then, obj can be processed as an ordered list of values. However, unlike built-in iterables (Array, Set, Map, String, etc), obj is a lazy iterable. It means that, thanks to generators, obj does not store the computed values in memory and its values are computed just when are required. These are the essential features for implementing lazy evaluation.

sequency - ⚡️ Type-safe functional sequences for processing iterable data

  •    TypeScript

Type-safe functional sequences for processing iterable data in TypeScript and JavaScript. Sequency is a lightweight (5 KB minified), intensely tested (200+ tests, 99% coverage), type-safe functional programming library for processing iterable data such as arrays, sets and maps. It's written in TypeScript, compiles to ES5-compatible JavaScript and works in all current browsers and Node applications. The API is inspired by Sequences from the programming language Kotlin.


transducist - Ergonomic JavaScript/TypeScript transducers for beginners and experts.

  •    TypeScript

Ergonomic JavaScript/TypeScript transducers for beginners and experts. This computation is very efficient because no intermediate arrays are created and work stops early once 100 people are found.

lazit - Lazy composable operations on iterators/generators.

  •    Javascript

Lazy, composable operations on iterators/generators for ES6 and beyond. Use lazit right now with transpilers like babeljs or the Google Traceur Compiler or by using build/lazit.js or build/lazit.min.js which are precompiled using babeljs and browserified.

imlazy - Functional programming with lazy immutable iterables

  •    Javascript

All iterables created by imlazy are frozen with Object.freeze so, not only are they lazy, they're also immutable. If you want to find out more about the ES2015 iteration protocols this MDN article is a good place to start.

loda-js - Use JavaScript functionally, you shall.

  •    Javascript

Designed to be curried, all loda functions are. Last, most-significant arguments come. Yes, hmmm. Kitchen sink Loda is not. Minimal functional toolkit, it is. Build complex functionality from it, you can.

45 - A Functional, monadic test-runner

  •    TypeScript

45 is the fast and functional test runner that is easy to use and gets out of your way. When running 45 from the command line, it will look for all test files it can, collecting all exports, of no particular export name, that adhere to the Test interface described in the types section. This means that 45 can be extended to handle new test types not offered here via 3rd party libraries.