doc: add book,internal,reference,builtins sections

This commit is contained in:
samsonium
2026-10-19 11:11:43 +03:00
parent 306be6b82d
commit 81d07aa6e5
14 changed files with 420 additions and 2 deletions
@@ -0,0 +1,44 @@
# Функции и рекурсия
Функция объявляется ключевым словом `fn`, именем, списком типизированных аргументов и, если функция возвращает значение, типом результата.
```
fn sum(uint a, uint b) uint
{
return a + b;
}
```
Если функция ничего не возвращает, тип после закрывающей скобки можно опустить.
Вызов записывается как `name(arg1, arg2)`, аргументы передаются в порядке объявления.
## Возврат
return завершает текущую функцию.
Возвращаемое выражение должно быть совместимо с объявленным типом.
Пустой return; используется в функции без результата.
Возврат вне функции — ошибка компиляции.
## Рекурсия
Функция может вызывать саму себя:
```
fn factorial(uint n) uint
{
if (n <= 1)
return 1;
return n * factorial(n - 1);
}
```
Каждый вызов получает собственное окружение.
ВМ хранит адрес возврата в стеке вызовов, а локальные значения — в стеке окружений.
При возврате объекта компилятор переносит его владение в родительское окружение.
---
Далее: [Классы и объекты](./05_classes-and-objects.md)
Назад: [Управление потоком](./03_control-flow.md)