First-Class Polymorphism