spica
Version:
Supervisor, Coroutine, Channel, select, AtomicPromise, Cancellation, Cache, List, Queue, Stack, and some utils.
27 lines (23 loc) • 726 B
text/typescript
import { Sequence } from '../../../sequence';
describe('Unit: lib/monad/sequence/member/reduce', () => {
describe('reduce', () => {
it('temporary', () => {
let cnt = 0;
const mem = Sequence.cycle([() => ++cnt])
.map(f => f())
.reduce();
assert.deepStrictEqual(
mem
.take(2)
.foldr((a, b) => Sequence.from([a].concat(b.extract()).concat(b.extract())), Sequence.from<number>([]))
.extract(),
[1, 2, 2]);
assert.deepStrictEqual(
mem
.take(2)
.foldr((a, b) => Sequence.from([a].concat(b.extract()).concat(b.extract())), Sequence.from<number>([]))
.extract(),
[3, 4, 4]);
});
});
});