An atom is a literal, a constant with name. An atom should be
enclosed in single quotes (') if it does not begin with a
lower-case letter or if it contains other characters than
alphanumeric characters, underscore (_), or @.

Each term Term in the list is called an
element. The number of elements is said to be
the length of the list.

Formally, a list is either the empty list [] or
consists of a head (first element) and a tail
(remainder of the list) which is also a list. The latter can
be expressed as [H|T]. The notation
[Term1,...,TermN] above is actually shorthand for
the list [Term1|[...|[TermN|[]]]].

Example: [] is a list, thus [c|[]] is a list, thus [b|[c|[]]] is a list, thus [a|[b|[c|[]]]] is a list, or in short [a,b,c].

A list where the tail is a list is sometimes called a proper list. It is allowed to have a list where the tail is not a
list, for example [a|b]. However, this type of list is of
little practical use.

A record is a data structure for storing a fixed number of
elements. It has named fields and is similar to a struct in C.
However, record is not a true data type. Instead record
expressions are translated to tuple expressions during
compilation. Therefore, record expressions are not understood by
the shell unless special actions are taken. See shell(3)
for details.