npm install iteriter 
====
Utility library for functional programming based on ES2015 generators that ensures lazy evaluation of possibly infinite ranges.
#### Fizzbuzz generator
``js
import { compose, map, range, take } from 'iter';
const fizzBuzz = compose(
map(n => n % 3 === 0 ? 'fizz' : n),
map(n => n % 5 === 0 ? 'buzz' : n),
map(n => n % 5 === 0 && n % 3 === 0 ? 'fizzbuzz' : n),
range(1, Infinity)
);
[...take(15, fizzBuzz)]
// => [1, 2, 'fizz', 4, 'buzz', 'fizz', 7, 8 , 'fizz', 'buzz', 11, 'fizz', 13, 14, 'fizzbuzz']
`
#### Fibonacci sequence up to the nth number
`js
import { zipWith, tail, take } from 'iter';
const fibonacci = function * () {
yield 0;
yield 1;
yield * zipWith((x, y) => x + y, fibonacci(), tail(fibonacci()));
};
[...take(8, fibonacci())]
// => [0, 1, 1, 2, 3, 5, 8, 13]
`
* compact(iterable)
* compose(...iterables)
* filter(filterFn, iterable)
* isIterable(iterable)
* map(mapFn, iterable)
* pluck(iterable)
* slice(fromIdx, len, iterable)
* tail(iterable)
* take(num, iterable)
* unqiue(iterable)
* zipWith(zipFn, ...iterables)`