Clause
← Уся документація

Англійський оригінал змінився після перекладу, тож частина тексту може бути застарілою. Читати англійською

Перекладено з англійського оригіналу · 1e3a39c8-dirty · 2026-10-26

Подання термів

Допущені види: атоми/булеві значення, довільні цілі числа, скінченні числа з рухомою комою binary64, кортежі, правильні/неправильні списки та рядки, map, bitstring і звичайні кортежні record; native records (native records); fun (функціональні значення); локальні pid, порти та посилання (нижче, порти). Кодування слів описано в abi.md.

Володіння

Атоми

Цілі числа

Числа з рухомою комою

Кортежі, списки, рядки

Map

Bitstring

Record

Pid і посилання

self/0 повертає pid процесу, що викликає, make_ref/0 — нове посилання; pid_to_list/1 і ref_to_list/1 повертають їхній текст.

Порівняння і порядок

Ітеративне, без обмеження роботи, як в OTP: порівняння, включно з пошуками ключів map, обмежене лише пам’яттю для пар, що очікують, а однакові слова рівні без обходу. Вирівняні за байтом bitstring порівнюються цілими байтами. Порядок: числа < атоми < посилання < fun < порти < pid < кортежі < native record < map < nil < списки < bitstring (порядок fun між собою). Атоми порівнюються за написанням UTF-8 (порядок кодових точок); кортежі — за арністю, потім полями; map — за розміром, потім ключами, потім значеннями; bitstring — за логічними бітами. Числа (малі цілі, числа з рухомою комою, bignum за знаком і машинними розрядами), атоми (за написанням у таблиці атомів через неблокувальний індекс за номером), локальні посилання (за номером), цілобайтові binary, а також кортежі й списки цих значень із вкладеністю до 8 рівнів упорядковуються безпосередньо за словами й комірками (detail::word_order), без допуску термів; будь-яка інша пара, число з рухомою комою проти bignum тієї самої бітової довжини або мале ціле за межами 2^53 проти числа з рухомою комою використовує структурний порядок. =:= іде тим самим шляхом (detail::word_exact): пари, які він розрізняє за порядком, нерівні, а одне слово чи два посилання, які він визнає рівними, рівні, тож receive, що зіставляє посилання відповіді, не допускає жодного терма. lists:sort/1 і lists:usort/1 сортують слова елементів на місці: списки лише малих цілих або лише атомів — за словом чи написанням, інші — стабільним сортуванням за порядком слів.

Друк

format_term (output.hpp) відображає будь-який допущений терм в одному з двох стилів OTP. Цілі числа, кортежі (record є кортежами) і вкладеність виглядають однаково в обох.

~w (TermStyle::write)erlang:display/1 (TermStyle::display)
АтомиУ лапках, якщо не починаються з малої літери Latin-1, за якою йдуть символи імені (з @); зарезервовані слова і maybe/else беруться в лапки; символи поза Latin-1 екрануються як \x{H}У лапках, якщо не починаються з малої літери Latin-1, за якою йдуть літери, цифри або _; для зарезервованих слів і @ особливого правила немає; UTF-8 зберігається
Числа з рухомою комоюНайкоротше подання для точного відновлення в розміщенні OTP: 0.1, 100.0, 1.0e16, 1.5e-7C %.6e: 1.500000e+00
СпискиЕлементи: [104,105], [1,2|3]Плаский список друкованих байтів Latin-1 друкується як "hi" (сирі байти; екрануються лише \n і ")
Bitstring<<1,2,5:3>>Друкований ASCII binary друкується як <<"hi">>, інші — як ~w
Map#{k => v,k2 => v2}#{k=>v,k2=>v2}