> For the complete documentation index, see [llms.txt](https://aup.nomi.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://aup.nomi.dev/the-language/types-and-values/functions.md).

# Functions

## Declare a function

## Arrow functions (lambda)

Like JavaScript or C#, but our functions have no "**this**", so arrow function is a short way to create a function.

```javascript
var add = (a, b) => a + b
puts add(4, 5)    // 9
```

{% hint style="info" %}
Summary:

* **func** keyword helps you declare a function in top-level of code.
* Arrow function creates a function as an expression.
  {% endhint %}

## Closures & bindings

We have an example, a counting program:

```go
var count = 0

func increase() {
    count++
}

func decrease() {
    count--
}
```

The **count** variable is binded in two functions, **increase()** and **decrease()**. When we call one of them, the value of **count** will be modified.
