A list of type List<T> is either empty or
consists of an head element h of type T and a tail list
t of type List<T>.
By repeated list construction, we can build sequences of T elements of
arbitrary length.
Author: Wolfgang Schreiner Last Modification: April 12, 1997