1 private@ 2 3 type A = 4 let obs u : u32 = 5 5 let obs v : u32 = 8 6 let obs w : u32 = 11 7 8 do 9 let obs n : u32 = 7 10 let obs m : u32 = 17 11 12 let a = A.new 13 a.u@obs = n@obs 14 a.v@obs = n@obs + 8 15 a.w@obs = n@obs + 8 + m@obs 16 assert n == 7 && a.u == 7 && a.v == 15 && a.w == 32 17 18 n = 8 19 assert n == 8 && a.u == 8 && a.v == 16 && a.w == 33 20 21 m = 22 22 assert a.w == 38 23 24 do 25 let obs n : u32 = 9 26 let a = A u@obs = n@obs + 2 27 assert a.u == 11 28 29 n = 15 30 assert a.u == 17 31 32 do 33 let obs n : u32 = 5 34 let m@obs = n@obs + 2 35 assert m == 7 36 37 n = 7 38 assert m == 9 39 40 type B = 41 let obs u = Vector3.new 42 let obs v = Vector3.new 43 44 let w@obs = u@obs + v@obs 45 46 do 47 let b = B u = Vector3 1 2 3 48 v = Vector3 4 5 6 49 50 assert b.w == Vector3 5 7 9 51