We discuss the polymorphic lambda-calculus, using formulations in the
style of Curry (where types are assigned to untyped terms) and Church
(where every terms has a unique type). We talk about the practical
issues of type inference and type reconstruction (both of which are
known to be undecidable) and give representations of these languages in
Elf. Interestingly, despite the expressiveness of the polymorphic
lambda-calculus, it is possible to give and intrinsic encoding, where
only well-typed expression are representable.
We also show how the natural numbers, iteration, and primitive recursion
can be encoded in the polymorphic lambda calculus via polymorphic
Church numerals.