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.