Справочник compute-функций
Все теги подъязыка <compute>, по группам. Раздел
Язык вычислений объясняет, как они складываются вместе.
Как читать колонку «Сигнатура»: int|str|list — любой из трёх типов, … — любое число
детей, ? — необязательный атрибут, 1 — ровно одно дочернее выражение, — — тег сам
по себе значения не даёт. Слоты — дети с должностью — стоят по имени в сигнатуре того
тега, которому они принадлежат.
Литералы и ссылки
Подробно: Язык вычислений
| Тег | Сигнатура | Что делает |
|---|---|---|
<int> | v= → int | Целочисленный литерал (атрибут v) |
<str> | v= → str | Строковый литерал (атрибут v) |
<list> | v= или int… → list | Литерал-список целых или из вложенных выражений |
<field> | name= → str | Значение последовательности в области видимости — как ${{X}} |
<var> | name= → int|str|list | Значение, связанное <let> |
<let> | name= + 1 → — | Назвать промежуточный результат для соседних тегов |
<current> | → int|str | Текущий элемент перебора (внутри <do>) |
<current_index> | → int | Номер текущего элемента, с нуля |
<acc> | → int|str|list | Накопитель (внутри <reduce>) |
Списки и перебор
Подробно: Списки и перебор
| Тег | Сигнатура | Что делает |
|---|---|---|
<each> | <over> <do> → list | Преобразовать каждый элемент → список |
<reduce> | <over> <init> <do> → int|str|list | Свернуть список в одно значение (<acc>) |
<join> | list + sep=? → str | Список → строка (атрибут sep) |
<at> | <in> <index> + default=? → int|str | Элемент по индексу (атрибут default) |
<length> | str|list → int | Длина строки или списка |
Арифметика
Подробно: Арифметика
| Тег | Сигнатура | Что делает |
|---|---|---|
<add> | int… → int | Сумма всех детей (пусто → 0) |
<subtract> | int… → int | Первое минус сумма остальных |
<multiply> | int… → int | Произведение (пусто → 1) |
<divide> | int int → int | Целочисленное деление к −∞ (2 ребёнка) |
<mod> | int int → int | Остаток по Евклиду, всегда ≥ 0 |
Строки, кодирование и форматирование
Подробно: Строки и форматирование
| Тег | Сигнатура | Что делает |
|---|---|---|
<encode> | str(1) + as= → str | Символ → число (base36/ascii/hex/…) |
<to_number> | str → int | Строку из цифр → целое |
<pad> | int|str + width= fill=? → str | Дополнить слева до ширины (width, fill) |
<concat> | int|str… → str | Склеить несколько частей в строку |
<upper> / <lower> | str → str | ВЕРХНИЙ / нижний регистр |
<capitalize> | str → str | Первая буква заглавная |
<title> | str → str | Первая буква каждого слова заглавная |
<mask> | str + pattern= → str | Маска оформления (pattern: x/w/*) |
<slice> | str + from= to=? → str | Подстрока [from, to) |
<replace> | str + from= to= → str | Заменить все вхождения (from, to) |
<trim> | str → str | Убрать крайние пробелы |
<group> | str + size=? sep=? → str | Сгруппировать справа (size, sep) |
Условие
Подробно: Условия
| Тег | Сигнатура | Что делает |
|---|---|---|
<choose> | <when>… <otherwise> → int|str|list | Выбор ветки; нужен <otherwise> |
<when> | <test> <then> → — | Ветка: предикат <test> и значение <then> |
<otherwise> | 1 → int|str|list | Ветка «иначе» (обязательна) |
<test> | 1 → yes|no | Держит один предикат, даёт «да/нет» |
<then> | 1 → int|str|list | Значение сработавшей ветки |
<equals> | int|str ×2 → yes|no | Предикат: два целых равны |
<greater_than> | int int → yes|no | Предикат: A > B |
<less_than> | int int → yes|no | Предикат: A < B |
<is_digit> | str(1) → yes|no | Предикат: символ — цифра 0–9 |
Обёртки и спецтеги
| Тег | Сигнатура | Что делает |
|---|---|---|
<over> | 1 → str|list | Вход-список для <each> / <reduce> |
<do> | 1 → int|str|list | Тело перебора для <each> / <reduce> |
<init> | 1 → int|str|list | Начальное значение накопителя для <reduce> |
<in> | 1 → list | Список для <at> |
<index> | 1 → int | Номер элемента для <at> |
<result> | 1 → int|str|list | Итоговое значение <compute> |
<valid> | 1 → — | Reject-and-retry: перегенерировать, пока не валидно |
Проработанные примеры — в разделе Язык вычислений.