1// map()
2
3[1,2,3].map(function(x) { return x + 1 }) === [2,3,4]
4seq([1,,,2,,,3]).map(function(x) { return x + 1}) === seq([2,,,3,,,4])
5seq([1,,,2,,,3,,,]).map(function(x) { return x + 1 }) === seq([2,,,3,,,4,,,])
6
7// filter()
8
9[1,2,3].filter(function(x) { return x > 1; }) === [2,3]
10seq([1,,,2,,,3]).filter(function(x) { return x > 1; }) === seq([2,,,3])
11seq([1,,,2,,,3,,,]).filter(function(x) { return x > 1; }) === seq([2,,,3,,,])
12
13// concatAll()
14
15[ [1, 2, 3], [4, 5, 6] ].concatAll() === [1,2,3,4,5,6]
16seq([ seq([1,,,2,,,3]),,,seq([4,,,5,,,6]) ]).concatAll() === seq([1,,,2,,,3,,,4,,,5,,,6])
17
18// If a new sequence arrives before all the items
19// from the previous sequence have arrived, no attempt
20// to retrieve the new sequence's elements is made until
21// the previous sequence has completed. As a result the
22// order of elements in the sequence is preserved.
23seq([
24 seq([1,,,, ,2, ,3])
25 ,,,seq([,,4, ,5, ,,6]) ]).
26 concatAll() === seq([1,,,,,2,,3,,4,,5,,,6])
27
28// Notice that as long as at least one sequence being
29// concatenated is incomplete, the concatenated sequence is also
30// incomplete.
31seq([
32 seq([1,, ,,, ,,,2,,,3])
33 ,,,seq([4,,,5,,, ,,, ,,6,,,]) ]).
34 concatAll() === seq([1,,,,,,,,2,,,3,4,,,5,,,,,,,,6,,,])
35
36// reduce()
37
38[ 1, 2, 3 ].reduce(sumFunction) === [ 6 ]
39seq([ 1,,,2,,,3 ]).reduce(sumFunction) === seq([,,,,,,6])
40
41// Reduced sequences do not complete until the
42// sequence does.
43seq([ 1,,,2,,,3,,, ]).reduce(sumFunction) === seq([ ,,,,,,,,,])
44
45// zip()
46
47// In both Arrays and Observables, the zipped sequence
48// completes as soon as either the left or right-hand
49// side sequence completes.
50Array.zip([1,2],[3,4,5], sumFunction) === [4,6]
51Observable.zip(seq([1,,,2]),seq([3,,,4,,,5]), sumFunction) === seq([4,,,6])
52
53// take()
54[1,2,3].take(2) === [1, 2]
55seq([ 1,,,2,,,3 ]).take(2) === seq([ 1,,,2 ])
56seq([ 1,,,2,,,3,,, ]).take(2) === seq([ 1,,,2 ])
57
58// takeUntil()
59
60// takeUntil works for Arrays, but it's not very useful
61// because the result will always be an empty array.
62[1,2,3].takeUntil([1]) === []
63
64seq([1,,,2,,,3,,, ]).takeUntil(
65seq([ ,,, ,,4 , ])) === seq([ 1,,,2 ])
66
67