thp-lang.org/md/learn/functions/lambdas.md
2024-02-20 05:53:38 -05:00

71 lines
600 B
Markdown

# Lambdas / Anonymous functions
## Anonymous function
```thp
fun(Int x, Int y) -> Int {
x + y
}
numbers.map(fun(x) {
x * 2
})
```
## Closure types
By default closures **always** capture variables as **references**.
```thp
var x = 20
val f = fun() {
print(x)
}
f() // 20
x = 30
f() // 30
```
You can force a closure to capture variables by value.
```thp
fun(parameters) clone(variables) {
// code
}
```
```thp
var x = 20
val f = fun() clone(x) {
print(x)
}
f() // 20
x = 30
f() // 20
```
## Lambdas
```thp
numbers.map {
$0 * 2
}
```