Puoi usare gli atomi ogni volta che hai un insieme di costanti da esprimere. Gli atomi offrono un modo type-safe per confrontare i valori. Un atomo è definito dal suo nome, preceduto da due punti:
# Atoms start with a ':',
# followed by alphanumeric snake_cased characters
:an_atom
Molte funzioni della libreria standard di Elixir restituiscono un atomo per annotare il risultato:
Enum.fetch([1], 0)
# => {:ok, 1}
Enum.fetch([1], 2)
# => :error
Internamente, gli atomi sono rappresentati da un numero intero in una tabella di ricerca, assegnato automaticamente. Questo rende il confronto tra atomi più veloce del confronto tra stringhe. Non è possibile modificare questo valore interno. In genere, creare dinamicamente atomi a partire da input forniti dall'utente è considerato un anti-pattern. Il runtime ha spazio solo per un numero limitato di atomi: generare nuovi atomi a runtime potrebbe fallire se la tabella degli atomi è piena.