whole program type checking and evaluation seems to work. Need to add list datatype