pslang/examples/test.psl

54 lines
802 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 {
// 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()