/* Header file for the list concrete data type */
typedef struct cell *list;
struct cell
{
void *head;
list tail;
};
/* construct a new cell from an element that becomes the
head of the new cell and a list that becomes the tail
of the new cell */
extern list cons(void *element, list l);
/* free the first cell on a list and return the tail of the list */
extern list tail_and_free(list l);