Modifying the observers
element head(list* l) {require( ! empty(l) ); return l->e;
head for both CONS and INTERVAL
} list* tail(list* l) {require( ! empty(l) ); switch( l->tag ) { case CONS: return l->next; case INTERVAL: return interval((l->e)+1,l->z); } }
tail