distinguished function type from variable types
separated variable environment and type environment
integrated lookup table with symbols
start to write semantic analyzer