title: Where does the T, U, V convention for generic type params come from?
body: <p>Java, C#, and TypeScript (aka. the Sun/Hejlsberg family of languages) use <code>T</code>, <code>U</code>, <code>V</code>, etc. to represent generic type parameters. Ostensibly that's because <code>T</code> stands for "Type", and <code>U</code> and <code>V</code> follow <code>T</code> in the alphabet.</p>
  
  <p>On the other hand, Scala uses <code>A</code>, <code>B</code>, <code>C</code> and so on, and OCaml and Haskell use <code>a</code>, <code>b</code>, and <code>c</code>.</p>
  
  <p>Where do these conventions come from? Is it because the functional languages are closer to math proofs, where <code>α</code>, <code>β</code>, and <code>γ</code> are used by convention?</p>
  
  <hr>
  
  <p>Similar, but doesn't answer my question: <a href="https://stackoverflow.com/questions/4367939/where-does-the-c-sharp-generics-naming-convention-come-from">Where does the C# generics naming convention come from?</a>.</p>