pslang/examples/test.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()