Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100755 260 lines (205 sloc) 14.457 kb
ef86bef @moritz [sequence] is the new series
moritz authored
1 use v6;
2 use Test;
3
4 # L<S03/List infix precedence/"the sequence operator">
5
5d94616 @djanatyn RT #76046: &[+] in infix:<...>
djanatyn authored
6 plan 125;
ef86bef @moritz [sequence] is the new series
moritz authored
7
8 # single-term sequence
9
10 is ~( 1 ... 1 ), '1', '1 ... 1';
11 is ~( 'a' ... 'a' ), 'a', "'a' ... 'a'";
12
13 # finite sequence that exactly hit their limit
14
15 is (1 ... 5).join(', '), '1, 2, 3, 4, 5', 'simple sequence with one item on the LHS';
16 is (1 ... -3).join(', '), '1, 0, -1, -2, -3', 'simple decreasing sequence with one item on the LHS';
17 is (1, 3 ... 9).join(', '), '1, 3, 5, 7, 9', 'simple additive sequence with two items on the LHS';
18 is (1, 0 ... -3).join(', '), '1, 0, -1, -2, -3', 'simple decreasing additive sequence with two items on the LHS';
19 is (1, 3, 5 ... 9).join(', '), '1, 3, 5, 7, 9', 'simple additive sequence with three items on the LHS';
20 is (1, 3, 9 ... 81).join(', '), '1, 3, 9, 27, 81', 'simple multiplicative sequence with three items on the LHS';
21 is (81, 27, 9 ... 1).join(', '), '81, 27, 9, 3, 1', 'decreasing multiplicative sequence with three items on the LHS';
22 is (1, { $_ + 2 } ... 9).join(', '), '1, 3, 5, 7, 9', 'simple sequence with one item and block closure on the LHS';
23 is (1, *+2 ... 9).join(', '), '1, 3, 5, 7, 9', 'simple sequence with one item and * closure on the LHS';
24 is (1, { $_ - 2 } ... -7).join(', '), '1, -1, -3, -5, -7', 'simple sequence with one item and closure on the LHS';
25 is (1, 3, 5, { $_ + 2 } ... 13).join(', '), '1, 3, 5, 7, 9, 11, 13', 'simple sequence with three items and block closure on the LHS';
1d6c88b @KrisShannon Fudge rakudo for new Rat.perl standard
KrisShannon authored
26 #?rakudo todo "New Rat.perl"
65d1d83 @colomon Update tests to match the new standard for Rat.perl.
colomon authored
27 is (1, { 1 / ((1 / $_) + 1) } ... 1/5).map({.perl}).join(', '), '1, <1/2>, <1/3>, <1/4>, <1/5>', 'tricky sequence with one item and closure on the LHS';
ef86bef @moritz [sequence] is the new series
moritz authored
28 is (1, { -$_ } ... 1).join(', '), '1', 'simple alternating sequence with one item and closure on the LHS';
29 is (1, { -$_ } ... 3).[^5].join(', '), '1, -1, 1, -1, 1', 'simple alternating sequence with one item and closure on the LHS';
30
31 is ({ 3+2; } ... *).[^5].join(', '), '5, 5, 5, 5, 5', 'sequence with one scalar containing Code on the LHS';
32
33 is (1 ... 5, 6, 7).join(', '), '1, 2, 3, 4, 5, 6, 7', 'simple sequence with two further terms on the RHS';
34 is (1 ... 5, 4, 3).join(', '), '1, 2, 3, 4, 5, 4, 3', 'simple sequence with two extra terms on the RHS';
35 is (1 ... 5, 'xyzzy', 'plugh').join(', '), '1, 2, 3, 4, 5, xyzzy, plugh', 'simple sequence with two weird items on the RHS';
36
37 # infinite sequence that go past their limit
38 {
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
39 is (1 ... 5.5).[^6].join(', '), '1, 2, 3, 4, 5, 6', 'simple sequence with one item on the LHS';
40 is (1 ... -3.5).[^6].join(', '), '1, 0, -1, -2, -3, -4', 'simple decreasing sequence with one item on the LHS';
41 is (1, 3 ... 10).[^6].join(', '), '1, 3, 5, 7, 9, 11', 'simple additive sequence with two items on the LHS';
42 is (1, 0 ... -3.5).[^6].join(', '), '1, 0, -1, -2, -3, -4', 'simple decreasing additive sequence with two items on the LHS';
43 is (1, 3, 5 ... 10).[^6].join(', '), '1, 3, 5, 7, 9, 11', 'simple additive sequence with three items on the LHS';
44 is (1, 3, 9 ... 100).[^6].join(', '), '1, 3, 9, 27, 81, 243', 'simple multiplicative sequence with three items on the LHS';
45 is (81, 27, 9 ... 8/9).[^6], (81, 27, 9, 3, 1, 1/3), 'decreasing multiplicative sequence with three items on the LHS';
46 is (1, { $_ + 2 } ... 10).[^6].join(', '), '1, 3, 5, 7, 9, 11', 'simple sequence with one item and block closure on the LHS';
47 is (1, *+2 ... 10).[^6].join(', '), '1, 3, 5, 7, 9, 11', 'simple sequence with one item and * closure on the LHS';
48 is (1, { $_ - 2 } ... -8).[^6].join(', '), '1, -1, -3, -5, -7, -9', 'simple sequence with one item and closure on the LHS';
49 is (1, 3, 5, { $_ + 2 } ... 14).[^8].join(', '), '1, 3, 5, 7, 9, 11, 13, 15', 'simple sequence with three items and block closure on the LHS';
1d6c88b @KrisShannon Fudge rakudo for new Rat.perl standard
KrisShannon authored
50 #?rakudo todo "New Rat.perl"
65d1d83 @colomon Update tests to match the new standard for Rat.perl.
colomon authored
51 is (1, { 1 / ((1 / $_) + 1) } ... 11/60).[^6].map({.perl}).join(', '), '1, <1/2>, <1/3>, <1/4>, <1/5>, <1/6>', 'tricky sequence with one item and closure on the LHS';
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
52 is (1, { -$_ } ... 0).[^4].join(', '), '1, -1, 1, -1', 'simple alternating sequence with one item and closure on the LHS';
ef86bef @moritz [sequence] is the new series
moritz authored
53
54 is (1 ... 5.5, 6, 7).[^8].join(', '), '1, 2, 3, 4, 5, 6, 7, 8', 'simple sequence with two further terms on the RHS';
55 is (1 ... 5.5, 4, 3).[^8].join(', '), '1, 2, 3, 4, 5, 6, 7, 8', 'simple sequence with two extra terms on the RHS';
56 is (1 ... 5.5, 'xyzzy', 'plugh').[^8].join(', '), '1, 2, 3, 4, 5, 6, 7, 8', 'simple sequence with two weird items on the RHS';
57 }
58 # infinite sequence without limits
59
60 is (1 ... *).[^5].join(', '), '1, 2, 3, 4, 5', 'simple sequence with one item on the LHS';
61 is (1, 3 ... *).[^5].join(', '), '1, 3, 5, 7, 9', 'simple additive sequence with two items on the LHS';
62 is (1, 0 ... *).[^5].join(', '), '1, 0, -1, -2, -3', 'simple decreasing additive sequence with two items on the LHS';
63 is (1, 3, 5 ... *).[^5].join(', '), '1, 3, 5, 7, 9', 'simple additive sequence with three items on the LHS';
64 is (8, 7, 6 ... *).[^5].join(', '), '8, 7, 6, 5, 4', 'simple decreasing additive sequence with three items on the LHS';
65 is (1, 3, 9 ... *).[^5].join(', '), '1, 3, 9, 27, 81', 'simple multiplicative sequence with three items on the LHS';
66 is (81, 27, 9 ... *).[^5].join(', '), '81, 27, 9, 3, 1', 'decreasing multiplicative sequence with three items on the LHS';
67 is (1, { $_ + 2 } ... *).[^5].join(', '), '1, 3, 5, 7, 9', 'simple sequence with one item and block closure on the LHS';
68 is (1, *+2 ... *).[^5].join(', '), '1, 3, 5, 7, 9', 'simple sequence with one item and * closure on the LHS';
69 is (1, { $_ - 2 } ... *).[^5].join(', '), '1, -1, -3, -5, -7', 'simple sequence with one item and closure on the LHS';
70 is (1, 3, 5, { $_ + 2 } ... *).[^7].join(', '), '1, 3, 5, 7, 9, 11, 13', 'simple sequence with three items and block closure on the LHS';
1d6c88b @KrisShannon Fudge rakudo for new Rat.perl standard
KrisShannon authored
71 #?rakudo todo "New Rat.perl"
65d1d83 @colomon Update tests to match the new standard for Rat.perl.
colomon authored
72 is (1, { 1 / ((1 / $_) + 1) } ... *).[^5].map({.perl}).join(', '), '1, <1/2>, <1/3>, <1/4>, <1/5>', 'tricky sequence with one item and closure on the LHS';
ef86bef @moritz [sequence] is the new series
moritz authored
73 is (1, { -$_ } ... *).[^5].join(', '), '1, -1, 1, -1, 1', 'simple alternating sequence with one item and closure on the LHS';
74
75 is (1 ... *, 6, 7).[^7].join(', '), '1, 2, 3, 4, 5, 6, 7', 'simple sequence with two further terms on the RHS';
76 is (1 ... *, 4, 3).[^7].join(', '), '1, 2, 3, 4, 5, 6, 7', 'simple sequence with two extra terms on the RHS';
77 is (1 ... *, 'xyzzy', 'plugh').[^7].join(', '), '1, 2, 3, 4, 5, 6, 7', 'simple sequence with two weird items on the RHS';
78
79 # constant sequence
80
81 is ('c', { $_ } ... *).[^10].join(', '), 'c, c, c, c, c, c, c, c, c, c', 'constant sequence started with letter and identity closure';
82 is ('c', 'c' ... *).[^10].join(', '), 'c, c, c, c, c, c, c, c, c, c', 'constant sequence started with two letters';
83 is ('c', 'c', 'c' ... *).[^10].join(', '), 'c, c, c, c, c, c, c, c, c, c', 'constant sequence started with three letters';
84 is (1, 1 ... *).[^10].join(', '), '1, 1, 1, 1, 1, 1, 1, 1, 1, 1', 'constant sequence started with two numbers';
85 is (1, 1, 1 ... *).[^10].join(', '), '1, 1, 1, 1, 1, 1, 1, 1, 1, 1', 'constant sequence started with three numbers';
86
87 # misleading starts
88
89 is (1, 1, 1, 2, 3 ... 10).[^10].join(', '), '1, 1, 1, 2, 3, 4, 5, 6, 7, 8', 'sequence started with three identical numbers, but then goes arithmetic';
90 is (1, 1, 1, 2, 4 ... 16).join(', '), '1, 1, 1, 2, 4, 8, 16', 'sequence started with three identical numbers, but then goes geometric';
91 is (4, 2, 1, 2, 4 ... 16).join(', '), '4, 2, 1, 2, 4, 8, 16', 'geometric sequence started in one direction and continues in the other';
92
93 # some tests taken from Spec
94
95 is (False, &prefix:<!> ... *).[^6].join(', '), (False, True, False, True, False, True).join(', '), "alternating False and True";
96 is (False, &prefix:<!> ... *).[^10].grep(Bool).elems, 10, "alternating False and True is always Bool";
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
97 #?niecza skip '&[] NYI'
ef86bef @moritz [sequence] is the new series
moritz authored
98 is (1,2,&[+] ... 8).join(', ') , "1, 2, 3, 5, 8" , "Using &[+] works";
99 is (False, { !$_ } ... *).[^6].join(', '), (False, True, False, True, False, True).join(', '), "alternating False and True";
100 is (False, { !$_ } ... *).[^10].grep(Bool).elems, 10, "alternating False and True is always Bool";
101
102 # L<S03/List infix precedence/'"asymptotically approaching" is not the same as "equals"'>
103 # infinite sequence with limits
104
1d6c88b @KrisShannon Fudge rakudo for new Rat.perl standard
KrisShannon authored
105 #?rakudo 3 todo "New Rat.perl"
65d1d83 @colomon Update tests to match the new standard for Rat.perl.
colomon authored
106 is ~(1, 1/2, 1/4 ... 0).[^5].map({.perl}), '1 <1/2> <1/4> <1/8> <1/16>', 'geometric sequence that never reaches its limit';
107 is ~(1, -1/2, 1/4 ... 0).[^5].map({.perl}), '1 <-1/2> <1/4> <-1/8> <1/16>', 'alternating geometric sequence that never reaches its limit';
108 is (1, { 1 / ((1 / $_) + 1) } ... 0).[^5].map({.perl}).join(', '), '1, <1/2>, <1/3>, <1/4>, <1/5>', '"harmonic" sequence that never reaches its limit';
ef86bef @moritz [sequence] is the new series
moritz authored
109
110 # empty sequence
111
112 # L<S03/List infix precedence/'limit value is on the "wrong"'>
113 {
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
114 is (1, 2 ... 0).[^3], (1,2,3), 'No more: limit value is on the wrong side';
ef86bef @moritz [sequence] is the new series
moritz authored
115 }
116
117 # L<S03/List infix precedence/excludes the limit if it happens to match exactly>
118 # excluded limits via "...^"
119 {
120 is (1 ...^ 5).join(', '), '1, 2, 3, 4', 'exclusive sequence';
121 is (1 ...^ -3).join(', '), '1, 0, -1, -2', 'exclusive decreasing sequence';
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
122 is (1 ...^ 5.5).[^6].join(', '), '1, 2, 3, 4, 5, 6', "exclusive sequence that couldn't hit its limit anyway";
ef86bef @moritz [sequence] is the new series
moritz authored
123 is (1, 3, 9 ...^ 81).join(', '), '1, 3, 9, 27', 'exclusive geometric sequence';
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
124 is (81, 27, 9 ...^ 2).[^5].join(', '), '81, 27, 9, 3, 1', "exclusive decreasing geometric sequence that couldn't hit its limit anyway";
ef86bef @moritz [sequence] is the new series
moritz authored
125 is (2, -4, 8 ...^ 32).join(', '), '2, -4, 8, -16', 'exclusive alternating geometric sequence';
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
126 is (2, -4, 8 ...^ -32).[^6].join(', '), '2, -4, 8, -16, 32, -64', 'exclusive alternating geometric sequence (not an exact match)';
ef86bef @moritz [sequence] is the new series
moritz authored
127 is (1, { $_ + 2 } ...^ 9).join(', '), '1, 3, 5, 7', 'exclusive sequence with closure';
128 is (1 ...^ 1), (), 'empty exclusive sequence';
129 is (1, 1 ...^ 1), (), 'empty exclusive constant sequence';
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
130 is (1, 2 ...^ 0).[^3], (1, 2, 3), 'empty exclusive arithmetic sequence';
ef86bef @moritz [sequence] is the new series
moritz authored
131 is (1, 2 ...^ 0, 'xyzzy', 'plugh').[^3].join(', '), '1, 2, 3', 'exclusive sequence empty but for extra items';
132 is ~(1 ...^ 0), '1', 'singleton exclusive sequence';
133 is (4...^5).join(', '), '4', '4...^5 should parse as 4 ...^ 5 and not 4 ... ^5';
134 }
135
136
137 # RT #75698
138 ok ?(one((-5 ... ^5).flat) == 0), '-5 ... ^5 produces just one zero';
139
140 # RT #75316
d671183 @moritz rakudo refudging for str-numeric branch
moritz authored
141 #?rakudo skip 'mysterious'
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
142 #?niecza skip 'Failure NYI'
ef86bef @moritz [sequence] is the new series
moritz authored
143 isa_ok (1...()), Failure,
144 'empty list on right side of sequence operator does not cause infinite loop';
145
146 # RT #73508
147 is (1,2,4...*)[10], 1024,
148 'element from list generated using infinite sequence is accessible by index';
149
150 # RT #72914
151 is (4 ... ^5).join(', '), '4, 3, 2, 1, 0, 1, 2, 3, 4',
152 'geometric sequence started in one direction and continues in the other with exclusion';
153
154 lives_ok { (1 ... 5).perl }, 'Can take .perl of sequence';
155 is eval((1 ... 5).perl).join(','), '1,2,3,4,5',
156 'eval($sequence.perl) reproduces result list';
157
ff21ee5 @pmichaud Unfudge passing tests for RT #98790, RT #75768.
pmichaud authored
158 # RT 98790
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
159 is ~((1 ... *) Z~ ('a' ... 'z')).[^5], "1a 2b 3c 4d 5e", "Zipping two sequence in parallel";
ef86bef @moritz [sequence] is the new series
moritz authored
160
161 {
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
162 is (1, 2, 4 ... 3).[^4], (1, 2, 4, 8), "sequence that does not hit the limit";
ef86bef @moritz [sequence] is the new series
moritz authored
163 is (1, 2, 4 ... 2), (1, 2), "sequence that aborts during LHS";
164
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
165 is (1, 2, 4 ... 1.5).[^4], (1,2,4,8), "sequence that does not hit the limit";
ef86bef @moritz [sequence] is the new series
moritz authored
166 is (1, 2, 4 ... 1), (1), "sequence that aborts during LHS";
167
168 is ~(1, -2, 4 ... 1), '1', 'geometric sequence with smaller RHS and sign change';
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
169 is ~(1, -2, 4 ... 2).[^4], '1 -2 4 -8', 'geometric sequence with smaller RHS and sign change';
170 is ~(1, -2, 4 ... 3).[^4], '1 -2 4 -8', 'geometric sequence with smaller RHS and sign change';
171 is ~(1, -2, 4 ... 25).[^10], '1 -2 4 -8 16 -32 64 -128 256 -512', 'geometric sequence with sign-change and non-matching end point';
ef86bef @moritz [sequence] is the new series
moritz authored
172
173 is (1, 2, 4, 5, 6 ... 2), (1, 2), "sequence that aborts during LHS, before actual calculations kick in";
174
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
175 is (1, 2, 4, 5, 6 ... 3).[^6], (1,2,4,5,6,7), "sequence that aborts during LHS, before actual calculations kick in";
ef86bef @moritz [sequence] is the new series
moritz authored
176 }
177
178 # tests for the types returned
179
180 {
181 my @a = 1, 2, 3 ... 100;
182 is @a.elems, 100, "1, 2, 3 ... 100 generates a sequence with one hundred elements...";
183 is @a.grep(Int).elems, 100, "... all of which are Ints";
184 }
185
186 {
187 my @a = 1.Rat, 2.Rat, 3.Rat ... 100;
188 is @a.elems, 100, "1.Rat, 2.Rat, 3.Rat ... 100 generates a sequence with one hundred elements...";
189 is @a.grep(Rat).elems, 100, "... all of which are Rats";
190 }
191
192 {
193 my @a = 1.Num, 2.Num, 3.Num ... 100;
194 is @a.elems, 100, "1.Num, 2.Num, 3.Num ... 100 generates a sequence with one hundred elements...";
195 is @a.grep(Num).elems, 100, "... all of which are Nums";
196 }
197
198 {
199 my @a = 1, 2, 4 ... 64;
200 is @a.elems, 7, "1, 2, 4 ... 64 generates a sequence with seven elements...";
201 is @a.grep(Int).elems, @a.elems, "... all of which are Ints";
202 }
203
204 {
205 my @a = 1.Rat, 2.Rat, 4.Rat ... 64;
206 is @a.elems, 7, "1.Rat, 2.Rat, 4.Rat ... 64 generates a sequence with seven elements...";
207 is @a.grep(Rat).elems, 7, "... all of which are Rats";
208 }
209
210 {
211 my @a = 1.Num, 2.Num, 4.Num ... 64;
212 is @a.elems, 7, "1.Num, 2.Num, 4.Num ... 64 generates a sequence with seven elements...";
213 is @a.grep(Num).elems, 7, "... all of which are Nums";
214 }
215
216 # RT #74606
217 is (1, +* ... *).[^5].join('|'), (1 xx 5).join('|'),
218 '1, +* works for sequence';
219
ff21ee5 @pmichaud Unfudge passing tests for RT #98790, RT #75768.
pmichaud authored
220 # RT #75768, RT #98790
ef86bef @moritz [sequence] is the new series
moritz authored
221 is ~(1...10)[2...4], '3 4 5', 'can index sequence with sequence';
222
223 {
224 is (1, 2 ... *>=5), (1,2,3,4,5), "sequence with code on the rhs";
225 is (1, 2 ... *>5), (1,2,3,4,5,6), "sequence with code on the rhs";
226 is (1, 2 ...^ *>=5), (1,2,3,4), "exclusive sequence with code on the rhs";
227 is (1, 2 ...^ *>5), (1,2,3,4,5), "exclusive sequence with code on the rhs";
228 }
229
0df5744 @moritz fudge basic.t for rakudo
moritz authored
230 #?rakudo todo 'sequence + last'
ef86bef @moritz [sequence] is the new series
moritz authored
231 is (1, 2 , {last if $_>=5; $_+1} ... *), (1,2,3,4,5), "sequence that lasts in the last item of lhs";
232
233 {
234 is (1..* ... 5), (1, 2, 3, 4, 5), '1..* ... 5';
235 my @fib := (0, 1, *+* ... * );
ff21ee5 @pmichaud Unfudge passing tests for RT #98790, RT #75768.
pmichaud authored
236 # RT #98790
ef86bef @moritz [sequence] is the new series
moritz authored
237 is (@fib ... 8), (0 , 1, 1, 2 , 3, 5, 8), '@fib ... 8';
238 }
239
ff0784a @patrickas unfudge test
patrickas authored
240 # RT #78324
ef896c7 @pmichaud Update test message in basic.t to be more accurate.
pmichaud authored
241 is (32,16,8 ...^ Rat), (32,16,8) , 'stop on a matching type';
1b6274b @patrickas added test for RT #78324
patrickas authored
242
ef86bef @moritz [sequence] is the new series
moritz authored
243 # RT #75828
244 eval_dies_ok '1, 2, 3, ... 5', 'comma before sequence operator is caught';
245
042da08 @tadzik Moved the test for #73268 to the right file, moritz++ tadzik--
tadzik authored
246 # RT #73268
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
247 is ~(1...^*).[^10], '1 2 3 4 5 6 7 8 9 10', 'RT #73268';
042da08 @tadzik Moved the test for #73268 to the right file, moritz++ tadzik--
tadzik authored
248
5d94616 @djanatyn RT #76046: &[+] in infix:<...>
djanatyn authored
249 # RT #76046
f72a6f4 @colomon Switch .munch(N) to .[^N]. Fudge for Niecza.
colomon authored
250 #?niecza skip '&[] NYI'
251 is (1, 1, &[+] ... *).[^10], '1 1 2 3 5 8 13 21 34 55', 'use &[+] on infix:<...> series';
5d94616 @djanatyn RT #76046: &[+] in infix:<...>
djanatyn authored
252
ef5c6d5 @diakopter test rakudo sequence overmunching
diakopter authored
253 # see http://irclog.perlgeek.de/perl6/2012-05-30#i_5659147 ff.
254 # previously rakudo said Not enough positional parameters passed; got 3 but expected 4
255 is(((1,1,2,4,8)[^4], *+*+*+* ... *)[4], 8, 'WhateverCode with arity > 3 gets enough arguments');
256
e76dd4c @moritz s/done_testing/done/ as per recent S24 changes
moritz authored
257 done;
ef86bef @moritz [sequence] is the new series
moritz authored
258
259 # vim: ft=perl6
Something went wrong with that request. Please try again.