refactoring - split Infer.hs into Types, Pretty and Infer