y-lang 0.1.3

Compiler & Interpreter for the (rather new and very experimental) Y programming language.
Documentation
import std::*

let foo := [42; 10]

printi(foo[0])

print(" ")
let bar := (array : &[int]) : void => {
    printi(array[0])
    print(" ")

    array[1] = 17
    printi(array[1])
    print(" ")
}
bar(foo)

printi(foo[1])
print(" ")

foo[0] = 13;

let baz := (array: [int; 10]) : void => {
    printi(array[0])

    array[0] = 1337

    print(" ")
    printi(array[0])
    print(" ")
}

baz(foo)
printi(foo[0])
print(" ")

let lol := (var : &[char]) : void => {
    var[1] = 'O'
}

let test := "Hehe "
test[3] = 'l'

print(test)
lol(test)
print(test)


let hello_world := [' '; 13]
hello_world[0] = 'H'
hello_world[1] = 'e'
hello_world[2] = 'l'
hello_world[3] = 'l'
hello_world[4] = 'o'
hello_world[5] = ' '
hello_world[6] = 'W'
hello_world[7] = 'o'
hello_world[8] = 'r'
hello_world[9] = 'l'
hello_world[10] = 'd'
hello_world[11] = '!'
hello_world[12] = 0
print(hello_world)
print(" ")

let returning := () : [int; 10] => {
    let a := [0; 10]
    a[1] = 1
    a[2] = 2
    a[3] = 3
    a[4] = 4
    a[5] = 5
    a[6] = 6
    a[7] = 7
    a[8] = 8
    a[9] = 9
    a
}

let a := returning()

printi(a[5])
print(" ")
a[5] = 10

let b := returning()

printi(a[5])
print(" ")
printi(b[5])
print(" ")

/* TODO: str should be able to converted to TupleArray */
/* let other_returning := () : [char; 13] => { */
/*     "Hello World!" */
/* } */

baz([13; 10])

let asd := test[0]