1.0.5 • Published 7 years ago

lazy-eval v1.0.5

Weekly downloads
414
License
GPL-2.0
Repository
github
Last release
7 years ago

Lazy Evaluation

Simple and small library to do lazy evaluation (and memoization) with Javascript.

Example

Basic

import lazy from 'lazy-eval';

let counter = 0;
const executor = () => {
  counter += 1;
  return 'result';
};
const lazyVal = lazy(executor);

console.log(counter); // 0
console.log(lazyVal()); // 'result'
console.log(counter); // 1
console.log(lazyVal()); // 'result'
console.log(counter); // 1
console.log(lazyVal.isLazy); // true

Then operator

import lazy from 'lazy-eval';

let counter = 0;
const lazyVal = lazy(() => {
  counter += 1;
  return 1;
});
const lazyOp = lazyVal.then((v1) => lazy(() => {
  counter += 1;
  return v1 + 1;
}));
console.log(counter); // 1
console.log(lazyOp()); //  2
console.log(counter); // 2
console.log(lazyOp()); //  2
console.log(counter); // 2

Map operator

import lazy from 'lazy-eval';

let counter = 0;
const lazyVal = lazy(() => {
  counter += 1;
  return 1;
});
const lazyOp = lazyVal.map(v => {
  counter += 1;
  return v + 1;
});
console.log(counter); // 0
console.log(lazyOp()); //  2
console.log(counter); // 2
console.log(lazyOp()); //  2
console.log(counter); // 2

Also supports types

import { default as lazy, Lazy } from 'lazy-eval';

let counter = 0;
const executor = (): string => {
  counter += 1;
  return 'result';
};
const lazyVal: Lazy<string> = lazy(executor);

console.log(counter); // 0
console.log(lazyVal()); // 'result'
console.log(counter); // 1
console.log(lazyVal()); // 'result'
console.log(counter); // 1
console.log(lazyVal.isLazy); // true
1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago