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.

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}}
<var>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)
<at><in> <index> + default=?int|strElemento por índice (atributo default)
<length>str|listintLargo 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 intintDivisión entera hacia −∞ (2 hijos)
<mod>int intintResiduo 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>strintCadena 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>strstrMayúsculas / minúsculas
<capitalize>strstrPrimera letra en mayúscula
<title>strstrPrimera 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>strstrQuita 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|str ×2 → yes|noPredicado: dos enteros son iguales
<greater_than>int intyes|noPredicado: A > B
<less_than>int intyes|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|str|listEl 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.