Clause
← Toda la documentación

El original en inglés ha cambiado desde que se hizo esta traducción, por lo que partes de ella pueden estar desactualizadas. Leer en inglés

Traducido del original en inglés · 1e3a39c8-dirty · 2026-10-26

Representación de términos

Tipos admitidos: átomos/booleanos, enteros arbitrarios, flotantes binary64 finitos, tuplas, listas propias/impropias y cadenas, maps, bitstrings y records ordinarios de tupla; native records (native records); funs (valores de función); pids, puertos y referencias locales (más abajo, puertos). Las codificaciones en palabras están en abi.md.

Propiedad

Átomos

Enteros

Flotantes

Tuplas, listas, cadenas

Maps

Bitstrings

Records

Pids y referencias

self/0 devuelve el pid del proceso que llama, make_ref/0 una referencia nueva; pid_to_list/1 y ref_to_list/1 devuelven su texto.

Comparación y orden

Iterativa y sin límite de trabajo, como en OTP: solo la memoria para los pares pendientes acota una comparación, incluidas las búsquedas de claves de map, y las palabras idénticas son iguales sin recorrerlas. Los bitstrings alineados a byte comparan bytes enteros de una vez. Orden: números < átomos < referencias < funs < puertos < pids < tuplas < native records < maps < nil < listas < bitstrings (los funs se ordenan entre sí). Los átomos se comparan por su grafía UTF-8 (orden de puntos de código); las tuplas por aridad y después por campos; los maps por tamaño, después por claves y después por valores; los bitstrings por bits lógicos. Los números (enteros pequeños, flotantes, bignums por signo y limbs), los átomos (por sus grafías en la tabla de átomos, mediante el índice numérico sin bloqueos), las referencias locales (por número), los binaries de bytes enteros y las tuplas y listas de estos anidadas hasta 8 niveles se ordenan directamente a partir de sus palabras y celdas (detail::word_order), sin admisión de términos; cualquier otro par, un flotante frente a un bignum de la misma longitud en bits, o un entero pequeño mayor que 2^53 frente a un flotante usa el orden estructural. =:= sigue la misma ruta (detail::word_exact): los pares que ordena como distintos son desiguales, y una palabra o dos referencias que encuentra iguales son iguales, de modo que un receive que compara la referencia de una respuesta no admite ningún término. lists:sort/1 y lists:usort/1 ordenan las palabras de los elementos en su sitio: las listas solo de enteros pequeños y solo de átomos por palabra o grafía, y las demás mediante una ordenación estable por orden de palabras.

Impresión

format_term (output.hpp) representa cualquier término admitido en uno de dos estilos de OTP. Los enteros, las tuplas (los records son tuplas) y el anidamiento se ven igual en ambos.

~w (TermStyle::write)erlang:display/1 (TermStyle::display)
ÁtomosEntre comillas salvo que empiece por una letra minúscula Latin-1 seguida de caracteres de nombre (con @); las palabras reservadas y maybe/else van entre comillas; más allá de Latin-1 se escapa como \x{H}Entre comillas salvo que empiece por una letra minúscula Latin-1 seguida de alfanuméricos o _; las palabras reservadas y @ no tienen regla especial; se conserva UTF-8
FlotantesIda y vuelta más corta con la disposición de OTP: 0.1, 100.0, 1.0e16, 1.5e-7C %.6e: 1.500000e+00
ListasElementos: [104,105], [1,2|3]Una lista plana de bytes Latin-1 imprimibles se imprime como "hi" (bytes en bruto; solo se escapan \n y ")
Bitstrings<<1,2,5:3>>Un binary ASCII imprimible se imprime como <<"hi">>, los demás como ~w
Maps#{k => v,k2 => v2}#{k=>v,k2=>v2}