// Vectors struct vec2 { x : f32 y : f32 } func add(a : vec2, b : vec2) -> vec2 { return vec2(a.x + b.x, a.y + b.y) } mut v = add(vec2(1.0, 2.0), vec2(3.0, 4.0)) v.x = -v.x v.y = -v.y // Factorial func factorial(n : u32) -> u32 { if n == 0u { return 1u } return n * factorial(n - 1u) } let factorial10 = factorial(10u) // Fibonacci func fib(n : u32) -> u32 { // Slow implementation with // exponentially-growing recursion tree if n == 0u | n == 1u { // Base case return n } return fib(n - 1u) + fib(n - 2u) } let fib10 = fib(10u) func h() -> u32 { return 0u } func f() -> u32 { return h() } func g() -> u32 { func h() -> u32 { return 1u } return f() } // Should equal 0u, but equals 1u due to an error in // how the interpreter resolves functions & variables let x = g()