A type constructor is a way to make new types out of existing types, by combining them.
For example $\texttt{List}$ is a type constructor that takes one argument. By applying $\texttt{List}$ to
the type $\texttt{Int}$, we get the new type $\texttt{List}[\texttt{Int}]$.