'''
Analogous to erlang ones.

"An atom is a literal, a constant with name."
'''

from collections import namedtuple

Atom = namedtuple('Atom', field_names='name')

def is_atom(element, name=None):
    '''Check if an element is an atom with a specific name.'''
    if not isinstance(element, Atom):
        return False

    if name is None:
        return True

    return element.name == name

def a(name):
    '''Build an atom with a given name.'''
    return Atom(name)