47 lines
773 B
PSL
47 lines
773 B
PSL
// 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:
|
|
return n // base case
|
|
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()
|