Lazy Evaluation
Simple and small library to do lazy evaluation (and memoization) with Javascript.
Example
Basic
; let counter = 0;const executor = { counter += 1; return 'result';};const lazyVal = ; console; // 0console; // 'result'console; // 1console; // 'result'console; // 1console; // true
Then operator
; let counter = 0;const lazyVal = ;const lazyOp = lazyVal;console; // 1console; // 2console; // 2console; // 2console; // 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
; ;;; console.logcounter; // 0console.loglazyVal; // 'result'console.logcounter; // 1console.loglazyVal; // 'result'console.logcounter; // 1console.loglazyVal.isLazy; // true