diff --git a/src/5440f068cf362592e4000cd6.js b/src/5440f068cf362592e4000cd6.js new file mode 100644 index 0000000..1def0d8 --- /dev/null +++ b/src/5440f068cf362592e4000cd6.js @@ -0,0 +1,25 @@ + +const sequence = fn => { + return { + take: n => { + const res = []; + for (let i = 0; i < n; ++i) { + res[i] = fn(i); + } + return res; + }, + takeWhile: pred => { + const res = []; + for (let i = 0; 1; ++i) { + const val = fn(i); + if (!pred(val)) break; + res[i] = fn(i); + } + return res; + }, + }; +}; + + +sequence(n => n).takeWhile(n => n < 10); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +sequence(n => n * n).take(10); // [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]