Saltar al contenido principal

Referencia de funciones de cálculo

Todas las etiquetas del sublenguaje <compute>, agrupadas. La sección Lenguaje de cálculo explica cómo encajan entre sí.

Cómo leer la columna «Firma»: int|str|list es cualquiera de los tres tipos, … es cualquier cantidad de hijos, ? marca un atributo opcional, 1 es exactamente una expresión hija y — significa que la etiqueta no da un valor propio. Las ranuras — los hijos con un puesto — aparecen por nombre en la firma de la etiqueta que las posee.

Los atributos de la firma son los únicos que una etiqueta lee. Cualquier otro nombre — <join seperator="-"> en lugar de sep= — detiene la corrida con TDC015 y el nombre real más cercano, porque una etiqueta que lo ignorara calcularía el valor como si no estuviera escrito. comment= se acepta en todas.

Literales y referencias​

A fondo: El sublenguaje compute

EtiquetaFirmaQué hace
<int>v= → intUn literal entero (atributo v)
<str>v= → strUn literal de cadena (atributo v)
<list>v= o int… → listUna lista literal de enteros, o armada con expresiones anidadas
<field>name= → strEl valor de una secuencia en el ámbito — como ${{X}}
<use>name= → int|str|listUn valor ligado con <let>
<let>name= + 1 → —Nombra un resultado intermedio para las etiquetas hermanas
<current>→ int|strEl elemento actual de la iteración (dentro de <do>)
<current_index>→ intEl índice del elemento actual, desde cero
<acc>→ int|str|listEl acumulador (dentro de <reduce>)

Listas e iteración​

A fondo: Listas e iteración

EtiquetaFirmaQué hace
<each><over> <do> → listTransforma cada elemento → una lista
<reduce><over> <init> <do> → int|str|listPliega una lista en un solo valor (<acc>)
<join>list + sep=? → strLista → cadena (atributo sep)
<split>str + sep= → listCadena → lista, corte por sep (obligatorio)
<at><in> <index> + default=? → int|strElemento por índice (atributo default)
<length>str|list → intLargo de una cadena o de una lista

Aritmética​

A fondo: Aritmética

EtiquetaFirmaQué hace
<add>int… → intSuma de todos los hijos (vacío → 0)
<subtract>int… → intEl primero menos la suma de los demás
<multiply>int… → intProducto (vacío → 1)
<divide>int int → intDivisión entera hacia −∞ (2 hijos)
<mod>int int → intResiduo euclidiano, siempre ≥ 0

Cadenas, codificación y formato​

A fondo: Cadenas y formato

EtiquetaFirmaQué hace
<encode>str(1) + as= → strCarácter → número (base36/ascii/hex/…)
<to_number>str → intCadena de dígitos → entero
<pad>int|str + width= fill=? → strRellena a la izquierda hasta un ancho (width, fill)
<concat>int|str… → strUne varias partes en una cadena
<upper> / <lower>str → strMayúsculas / minúsculas
<capitalize>str → strPrimera letra en mayúscula
<title>str → strPrimera letra de cada palabra en mayúscula
<mask>str + pattern= → strMáscara de despliegue (pattern: x/w/*)
<slice>str + from= to=? → strSubcadena [from, to)
<replace>str + from= to= → strReemplaza todas las apariciones (from, to)
<trim>str → strQuita los espacios de los extremos
<group>str + size=? sep=? → strAgrupa desde la derecha (size, sep)

Condicionales​

A fondo: Condicionales

EtiquetaFirmaQué hace
<choose><when>… <otherwise> → int|str|listElige una rama; requiere <otherwise>
<when><test> <then> → —Una rama: predicado <test> + valor <then>
<otherwise>1 → int|str|listLa rama «si no» (obligatoria)
<test>1 → yes|noContiene un predicado, da sí/no
<then>1 → int|str|listEl valor de la rama que coincidió
<equals>int int → yes|noPredicado: dos enteros son iguales
<greater_than>int int → yes|noPredicado: A > B
<less_than>int int → yes|noPredicado: A < B
<is_digit>str(1) → yes|noPredicado: un carácter es un dígito 0–9

Envoltorios y especiales​

EtiquetaFirmaQué hace
<over>1 → str|listLa lista de entrada para <each> / <reduce>
<do>1 → int|str|listEl cuerpo de la iteración para <each> / <reduce>
<init>1 → int|str|listEl valor inicial del acumulador para <reduce>
<in>1 → listLa lista para <at>
<index>1 → intEl índice del elemento para <at>
<result>1 → int|strEl valor final de un <compute>
<valid>1 → —Rechaza y reintenta hasta obtener algo válido

Vea la sección Lenguaje de cálculo para ejemplos resueltos.