add more examples

This commit is contained in:
Luna 2019-03-08 18:30:30 -03:00
parent b3ac29fd3b
commit a4685423a4
7 changed files with 85 additions and 2 deletions

11
examples/custom-types.jt Normal file
View file

@ -0,0 +1,11 @@
import io
// you can create your own types with 'type'
type T = int
fn main () {
T a = 2
// since T is int, io.puts with an int works
io.puts(a)
}

View file

@ -0,0 +1,16 @@
import io
import integer
fn my_puts(string str) {
io.puts(str)
}
fn my_puts(int my_int) {
io.puts(integer.to_str(my_int))
}
fn main () {
my_puts(2)
my_puts("aaa")
}

View file

@ -1,5 +1,6 @@
import io
fn main () {
io.shit("pant")
fn main () -> int {
io.puts("pant")
ret 0
}

View file

@ -0,0 +1,26 @@
import io
// takes a function that receives two ints, returns an int
// Func is the function type keyword, to not switch it with fn (which declares
// a function)
fn function_tester (Func function ([int, int] -> int)) -> int {
func(2, 2)
}
fn add(int a, int b) -> int {
a + b
}
fn main () {
// passes the function add to function_tester
res := function_tester(add)
// you can also create functions and put them in variables. not putting a
// function name on the fn block makes it return a Func instance to be put
// in a variable
anonymous := (fn () {})
// anonymous has type Func ([] -> void)
io.puts("res = {res}")
}

15
examples/strings.jt Normal file
View file

@ -0,0 +1,15 @@
import io
fn main () {
s := "this is a string"
io.puts(s)
s := "this is {s}"
io.puts(s)
s + 2 // invalid
// this however, is valid, there is an io.puts that handles int,
// more on function overload in a bit
io.puts(2)
}

14
examples/structs.jt Normal file
View file

@ -0,0 +1,14 @@
import io
struct MyStruct {
int var1,
int var2,
int var3
}
fn main () {
st = MyStruct{1, 2, 3}
// TODO: define a way for printable things
io.puts(st)
}