Podes usar atoms sempre que tenhas um conjunto de constantes para expressar. Os atoms fornecem uma forma de comparar valores com segurança de tipos. Um atom é definido pelo seu nome, precedido de dois pontos:
# Atoms start with a ':',
# followed by alphanumeric snake_cased characters
:an_atom
Muitas funções da biblioteca padrão do Elixir devolvem um atom para anotar o resultado:
Enum.fetch([1], 0)
# => {:ok, 1}
Enum.fetch([1], 2)
# => :error
Os Atoms são representados internamente por um número inteiro numa tabela de consulta, que é definida automaticamente. Por isso, comparar atoms é mais rápido do que comparar strings. Não é possível alterar este valor interno. Criar atoms dinamicamente a partir de dados fornecidos pelo utilizador é geralmente considerado um antipadrão. O runtime só tem espaço para um número limitado de atoms; gerar novos atoms em tempo de execução pode falhar se a tabela de atoms estiver cheia.