Further List Variations (Sections 4.5, 5.4.4)
We continue our discussion from last lecture about variations on list
implementation and specification. It is important to note that we can
combine all these variations together however we like. Last week we
talked about caching/lazy evaluation and back pointers: we treated
them separately, but if you wanted the advantages of both, you'd just
use them both.