Clause
← Toda a documentação

O original em inglês mudou desde esta tradução, pelo que partes dela podem estar desatualizadas. Ler em inglês

Traduzido do original em inglês · 1e3a39c8-dirty · 2026-10-26

Representação dos termos

Tipos admitidos: átomos/booleanos, inteiros arbitrários, floats binary64 finitos, tuplos, listas próprias/impróprias e strings, maps, bitstrings e records comuns em tuplo; native records (native records); funs (valores de função); pids, ports e referências locais (abaixo, ports). As codificações em palavras estão em abi.md.

Propriedade

Átomos

Inteiros

Floats

Tuplos, listas, strings

Maps

Bitstrings

Records

Pids e referências

self/0 devolve o pid do processo chamador, make_ref/0 uma nova referência; pid_to_list/1 e ref_to_list/1 devolvem o seu texto.

Comparação e ordem

Iterativa e sem limite de trabalho, como no OTP: apenas a memória para os pares pendentes limita uma comparação, incluindo as pesquisas de chaves de map, e palavras idênticas são iguais sem percurso. Os bitstrings alinhados ao byte comparam bytes inteiros de uma vez. Ordem: números < átomos < referências < funs < ports < pids < tuplos < native records < maps < nil < listas < bitstrings (as funs ordenam-se entre si). Os átomos comparam-se pela grafia UTF-8 (ordem dos pontos de código); os tuplos pela aridade e depois pelos campos; os maps pelo tamanho, depois pelas chaves e depois pelos valores; os bitstrings pelos bits lógicos. Os números (inteiros pequenos, floats, bignums por sinal e limbs), os átomos (pelas suas grafias na tabela de átomos, através do índice numérico sem bloqueios), as referências locais (por número), os binaries de bytes inteiros, e os tuplos e listas destes aninhados até 8 níveis são ordenados diretamente a partir das suas palavras e células (detail::word_order), sem admissão de termos; qualquer outro par, um float comparado com um bignum com o mesmo comprimento em bits, ou um inteiro pequeno além de 2^53 comparado com um float segue a ordem estrutural. =:= segue o mesmo caminho (detail::word_exact): os pares que ordena como diferentes são desiguais, e uma palavra ou duas referências que considere iguais são iguais, pelo que um receive que corresponda à referência de uma resposta não admite qualquer termo. lists:sort/1 e lists:usort/1 ordenam as palavras dos elementos no local: listas só de inteiros pequenos e só de átomos por palavra ou grafia, as outras com uma ordenação estável pela ordem das palavras.

Impressão

format_term (output.hpp) apresenta qualquer termo admitido num de dois estilos do OTP. Os inteiros, os tuplos (os records são tuplos) e o aninhamento têm o mesmo aspeto em ambos.

~w (TermStyle::write)erlang:display/1 (TermStyle::display)
ÁtomosEntre aspas, exceto se começar por uma letra minúscula Latin-1 seguida de caracteres de nome (com @); as palavras reservadas e maybe/else levam aspas; fora do Latin-1 escapa como \x{H}Entre aspas, exceto se começar por uma letra minúscula Latin-1 seguida de alfanuméricos ou _; as palavras reservadas e @ não têm regra especial; o UTF-8 é mantido
FloatsA representação mais curta que preserva o valor, na disposição do OTP: 0.1, 100.0, 1.0e16, 1.5e-7C %.6e: 1.500000e+00
ListasElementos: [104,105], [1,2|3]Uma lista plana de bytes Latin-1 imprimíveis é impressa como "hi" (bytes em bruto; apenas \n e " são escapados)
Bitstrings<<1,2,5:3>>Um binary ASCII imprimível é impresso como <<"hi">>, os restantes como ~w
Maps#{k => v,k2 => v2}#{k=>v,k2=>v2}