Skip to content

xgbuils/functor-iterable

Repository files navigation

functor-iterable

travis ci npm version Coverage Status Dependency Status

functor-iterable exports a class that builds iterables that provide map method.

Install

$ npm install functor-iterable --save

Usage

const FunctorIterable = require('functor-iterable')

const iterable = new FunctorIterable([4, 2, 7, 8]) // (4 2 7 8)
    .map(e => 3 * e) // (12 6 21 24)
    .map(e => e / 2) // (6 3 10.5 12)



// converting to array:
[...iterable] // [6, 3, 10.5, 12]

// traversing values:
for (const val of iterable) {
    // ...
}

// creating an iterator that traverses the values
let iterator = iterable[Symbol.iterator]()
iterator.next() // {value: 6, done: false}
iterator.next() // {value: 3, done: false}
iterator.next() // {value: 10.5, done: false}
iterator.next() // {value: 12, done: false}
iterator.next() // {value: undefined, done: true}

// Infinite iterable
const naturals = {
    [Symbol.iterator]: function* () {
        let i = 1
        while(true) { yield i++ }
    }
} // (1 2 3 4...)

const collatzTransform = e => e % 2 === 1 ? 3 * e + 1 : e / 2

new FunctorIterable(naturals) // (1  2  3  4  5...)
    .map(collatzTransform) // (4  1 10  2 16...)
    .map(collatzTransform) // (2  4  5  1  8...)
    .map(collatzTransform) // (1  2 16  4  4...)
    .map(collatzTransform) // (4  1  8  2  2...)
    .map(collatzTransform) // (2  4  4  1  1...)

Support

  • Node.js >=6
  • ES2015 transpilers

License

MIT

About

Iterable that implements optimized map method

Resources

Stars

Watchers

Forks

Packages

No packages published