2. List Variations

We will now look at a number of common variations on Lists. Some of
these are implementation `efficiency tricks' that are invisible to the
user (they are independent of the specification); others are
alternative ways of specifying lists to give slightly different, or
more, functionality.