diff --git a/examples/add.jt b/examples/add.jt new file mode 100644 index 0000000..447355f --- /dev/null +++ b/examples/add.jt @@ -0,0 +1,23 @@ +import io + +fn add (int a, int b) -> int { + a + b +} + +// return type is void by default +fn main () { + // explicit types, or + int val = add(2, 2) + + // type inferred from the functions' return value + val := add(2, 2) + + // variables are immutable, however, you can update them with + // the value of the old one. + val = val + 1 + + // a shorthand is val++, same for val--. + + // string interpolation is implicit + io.puts("2 plus 2 = {val}") +} diff --git a/examples/clojures.jt b/examples/clojures.jt new file mode 100644 index 0000000..6a1291a --- /dev/null +++ b/examples/clojures.jt @@ -0,0 +1,22 @@ +import io + +fn main () { + x := 0 + + // since variable are immutable but updatable, x is 1 inside clojure, but + // 0 inside main() + fn inner() { + x++ + } + + inner() + + // shows 0 + io.puts("x is {x}") + + // however, if you explicitly update x: + x = inner() + + // shows 1 + io.puts("x is {x}") +} diff --git a/examples/hello.jt b/examples/hello.jt new file mode 100644 index 0000000..11df9ab --- /dev/null +++ b/examples/hello.jt @@ -0,0 +1,5 @@ +import io + +fn main () { + io.shit("pant") +} diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..1e562d6 --- /dev/null +++ b/src/main.c @@ -0,0 +1,6 @@ +#include + +int main(void) +{ + return 0; +}