An implementation of the Pure Type System in Haskell