Types and Programing Languages: translation of the different type checkers to Haskell