Parametric polymorphism is now widely known in the programming community (often by the alternate name generics). They allow one to create types parameterized by another type (e.g. a generic list type), along with functions that work on any type (e.g. the functional programming mainstays map, filter, and reduce ). You may have also heard them called universal types. This last nomenclature comes fro