"While Generic Java (GJ) is designed to be eminently practical, it has its roots in some esoteric theory. Ideas that contributed to the design of GJ include Church's lambda calculus from the 1930s, Curry and Hindley's type inference system from the 1950s, and Girard and Reynold's polymorphic calculus from the 1970s."
"GJ programmers don't need to understand these concepts, but they helped the GJ designers to do a better job. Mathematics from the last century is relevant to designing languages for the next millennium."
From: GJ A Generic Java, Java may be in for some changes
By Philip Wadler, Dr. Dobb's Journal February 2000
The Binary Tree