Pure Type Systems for Functional Programming