''' 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)