Implementation of the functional programming streams concept in JS
JavaScript
Latest commit 0194bbc Dec 17, 2016 @abdulapopoola committed on GitHub Merge pull request #9 from abdulapopoola/engr/changeEngineeringSystem
Engr/change engineering system
Permalink
Failed to load latest commit information.
dist
docs
src standardized on JSCS Dec 17, 2016
tests
.gitignore
.jscsrc
.jshintrc fix test running Dec 17, 2016
.travis.yml fix travis Dec 17, 2016
LICENSE
README.md fix test running Dec 17, 2016
karma.conf.js added code coverage support Dec 17, 2016
package.json

README.md

Stream-js

Build Status Dependencies devDependency Status

What do you think of the following code snippet?

NaturalNumbers()
  .filter(function (n) { return n % 2 === 0; }) //even numbers filter
  .pick(100)
  .sum();

Beautifully succinct right?

Getting started

Stream-js is a very small (4.1kb minified) library that brings the power of streams to your programming. It enables you to write code as shown above.

Get the latest release from GitHub or via NPM.

NPM

npm install stream-js

Creating Streams

Streams can be created using the constructor function or using the helper methods: from and fromArray.

var streamOf2 = new Stream(1, function () {
    return new Stream(2, null);
});

var stream = Stream.create(1,2,3);

var streamFromArray = Stream.fromArray([1,2,3]);

Streams can be finite or infinite. Infinite streams can be used to model infinite series in mathematical domains like Natural numbers etc.

Finite Streams

var s = Stream.create(1,2,3);

Infinite Streams

function NaturalNumbers() {
    return new Stream(
        1,
        function () {
            return Stream.add(
                Stream.NaturalNumbers(),
                Stream.Ones());
        });
}

Using Streams

var evenNaturals = NaturalNumbers().filter(function(val) {
    return val % 2 === 0;
});
var sum = Stream.create(1,2,3).reduce(function(a, b) {
    return a + b;
});

Documentation

The stream-js API is available here

Contributing

Got ideas to improve stream-js? Or found a bug? Please file a new issue.

Tweet feedback and suggestions to me directly @abdulapopoola.

Copyright and license

Created and copyright (c) 2015 by AbdulFattah Popoola.

Stream-js is licensed under the MIT license.