Merge: doc: fixed some typos and other misc. corrections
[nit.git] / tests / test_comprehension.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 var c1 = [1..4]
16
17 # Simple comprehension
18 var a1 = [for i in c1 do i*2]
19 print a1.join(",")
20
21 # Cartesian product
22 var a2 = [for i in c1 do for j in c1 do i * 10 + j]
23 print a2.join(",")
24
25 # Cartesian product and filters
26 var a3 = [for i in c1 do if i.is_odd then for j in c1 do if j.is_even then i * 10 + j]
27 print a3.join(",")
28
29 # Nesting (useless)
30 var a4 = [for i in [for i in c1 do i*2] do i + 1]
31 print a4.join(",")
32
33 # Multi-dimensional
34 var a5 = [for i in c1 do [for j in c1 do i*10+j]]
35 print([for i in a5 do i.join(",")].join(";"))
36
37 # Multi-iteration (zip)
38 var a6 = [for i in c1, j in c1.reverse_iterator do i * 10 + j]
39 print a6.join(",")