Puedes usar los átomos siempre que tengas un conjunto de constantes que expresar. Los átomos ofrecen una forma de comparar valores con seguridad de tipos. Un átomo se define por su nombre, precedido de dos puntos:
# Atoms start with a ':',
# followed by alphanumeric snake_cased characters
:an_atom
Muchas funciones de la biblioteca estándar de Elixir devuelven un átomo para anotar el resultado:
Enum.fetch([1], 0)
# => {:ok, 1}
Enum.fetch([1], 2)
# => :error
Los átomos se representan internamente mediante un número entero en una tabla de búsqueda, cuyos valores se asignan automáticamente. Eso hace que comparar átomos sea más rápido que comparar strings. No es posible cambiar ese valor interno. Por lo general, se considera un anti-patrón crear átomos dinámicamente a partir de la entrada proporcionada por el usuario. El runtime solo tiene espacio para un número limitado de átomos; generar nuevos átomos en tiempo de ejecución podría fallar si la tabla de átomos está llena.