The basic data structure used for representing virtual code and data in
the avram library is declared as a list.
The list type is a pointer to a structure having a head
field and a tail field, which are also lists. The empty tree,
nil, is represented by the C constant NULL. A tree of the
form cons(a,b) is represented in C as a list whose
head is the representation of a and whose
tail is the representation of b.
A number of other fields in the structure are maintained automatically
and should not be touched. For that matter, even the head and
tail fields should be considered read-only. Because of sharing,
it is almost never valid to modify a list “in place”, except for cases
that are already covered by library functions.