Parameters can be added to an anonymous function by specifying the types as follows:
```
addIntToString (int, String) => { a, b;
println(b + a)
}
```
Named functions can have parameters **(with mandatory names)** like in this example:
```
addIntToString(a: Int, b: String) => {
println(b + a)
}
```
### 2.3 - Function calls
A function can be simply invoked like this if it has no parameters:
```
helloWorld()
```
If a function does have parameters, you can call it with arguments in the right order; if the function is not anonymous, it's also possible to call it by using the names of the corresponding parameters:
<sup>Note: While primitives types (`String`, `int`, `double`, `boolean`, `float`) will be transpiled to their equivalents for the target of the transpiler, this is not the case for other types.<sup>
Every variable has a static type by default; it is possible to make a **non-final** variable dynamic by adding `dyn`/`dynamic` to the attributes or making it the return type:
A class can be made with the keyword, their name, optional constructors (`~()`) where you can add parameters + code that will run when the class is instantiated, and the class body where you can define methods, properties etc: