Implementing Mark P Jones's <Typing Haskell in Haskell> and SPJ's <TIoPL>.