Yerbacon/docs/gettingstarted.md

1.3 KiB

1 - Variables

Variables defined using #= can't be changed (they are "final"), while the ones affected using the normal operator (=) can.

helloworld #= "Hello World"

2 - (Anonymous) Functions

You can make an anonymous functions using the following syntax:

getHelloWorld: ~String => {
  return "Hello World!"
}

~String can be omitted, see #3.

Note that you can make getHelloWorld final by replacing => with #=>.

To define a named (and mandatorily final) function, replace => with >> and put the (optional) return type before the function's name:

String getHelloWorld >> {
  return "Hello, World!"
}

2.1 - Main

Main can be a variable named main that contains an anonymous function, a function named main or a function that has the as_main attribute:

main #=> {}
main >> {}
as_main helloWorld >> {}

3 - Types

Types are inferred, which means that specifying types of variables or returned values is optional.

Every variable has a static type by default; it is possible to make a non-final variable dynamic by adding the dyn/dynamic attribute:

dyn helloWorld = 0
helloWorld = "Hello World!"

The attributes mentioned above can also be used as a return type for functions/anonymous functions:

helloWorld: ~dynamic => {}
dyn helloWorld >> {}