Перейти к основному содержимому

Справочник 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|listintДлина строки или списка

Арифметика

Подробно: Арифметика

ТегСигнатураЧто делает
<add>int…intСумма всех детей (пусто → 0)
<subtract>int…intПервое минус сумма остальных
<multiply>int…intПроизведение (пусто → 1)
<divide>int intintЦелочисленное деление к −∞ (2 ребёнка)
<mod>int intintОстаток по Евклиду, всегда ≥ 0

Строки, кодирование и форматирование

Подробно: Строки и форматирование

ТегСигнатураЧто делает
<encode>str(1) + as=strСимвол → число (base36/ascii/hex/…)
<to_number>strintСтроку из цифр → целое
<pad>int|str + width= fill=?strДополнить слева до ширины (width, fill)
<concat>int|str…strСклеить несколько частей в строку
<upper> / <lower>strstrВЕРХНИЙ / нижний регистр
<capitalize>strstrПервая буква заглавная
<title>strstrПервая буква каждого слова заглавная
<mask>str + pattern=strМаска оформления (pattern: x/w/*)
<slice>str + from= to=?strПодстрока [from, to)
<replace>str + from= to=strЗаменить все вхождения (from, to)
<trim>strstrУбрать крайние пробелы
<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 intyes|noПредикат: A > B
<less_than>int intyes|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: перегенерировать, пока не валидно

Проработанные примеры — в разделе Язык вычислений.