Você pode usar átomos sempre que precisar expressar um conjunto de constantes. Os átomos oferecem uma maneira de comparar valores com segurança de tipos. Um átomo é definido pelo seu nome, prefixado por dois-pontos:
# Atoms start with a ':',
# followed by alphanumeric snake_cased characters
:an_atom
Muitas funções da biblioteca padrão do Elixir retornam um átomo para anotar o resultado:
Enum.fetch([1], 0)
# => {:ok, 1}
Enum.fetch([1], 2)
# => :error
Átomos são representados internamente por um número inteiro em uma tabela de consulta, definida automaticamente. Por isso, comparar átomos é mais rápido do que comparar strings. Não é possível alterar esse valor interno. Em geral, considera-se um antipadrão criar átomos dinamicamente a partir de entrada fornecida pelo usuário. O runtime só tem espaço para um número limitado de átomos, e gerar novos átomos em tempo de execução pode falhar se a tabela de átomos estiver cheia.