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