1    private@
2    
3    type A<T> = T * T
4    
5    do
6        let f<T> (A<T> u v) where T : Number = u + v
7        let a = A 1 2
8        assert f a == 3
9    
10   do
11       let tuples = List<(u32, u32) u v>.new
12       tuples.add (1, 2)
13       let mut r = 0
14       for x in tuples do
15           r += x.u + x.v
16   
17       assert r == 3
18   
19       let f (list : List<(u32, u32)>) = list.size
20       assert f tuples == 1
21   
22   do
23       let f ((u32, i32) x y) = x as i32 + y
24       let r = f (1, 2)
25       assert r == 3
26   
27   do
28       let f (x : i32) = (less = x - 1, more = x + 1)
29       let g (x : i32) = (less = x - 1
30                          more = x + 1)
31       let r = f 10
32       assert r.less == 9 && r.more == 11 && r == g 10
33   
34   do
35       let f (x : i32) : (i32, i32) less more = (x - 1, x + 1)
36       let r = f 10
37       assert r.less == 9 && r.more == 11
38   
39   do
40       let tuple =
41           let u : i32 = 1
42           let v : i32 = 2
43           (=u, =v)
44   
45       assert tuple.u == 1 && tuple.v == 2
46