What are type quantifiers?
Many statically typed languages have parametric polymorphism. For example in C# one can define: T Foo<T>(T x){ return x; } In a call site you can do: int y = Foo<int>(3); These types are also sometimes written like this: Foo :: forall T. T -> T I have heard people say "forall is like lambda-abstraction at the type level". So Foo is a function that takes a type (for example int), and produces a value (for example a function of type int -> int). Many languages infer the type parameter, so that you can write Foo(3) instead of Foo<int>(3) . Suppose we have an object f of type forall T. T -> T .