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:
```
addNumbers(int a, int b, int c, int d) >> {
println(a + b + c + d)
}
helloWorld(1, 2, 3, 4) # Call without names
helloWorld(a = 1, b = 2, c = 3, d = 4) # Call with names
helloWorld(1, c = 3, b = 2, d = 4)
```
Note that println is the only function that will get transpiled to its equivalent.
<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>