\begin{schemeregion}
In section~\ref{sec:varar-semi}, we saw the basics of typing
variable-arity polymorphism.  The key ingredients are 
\begin{itemize}
\item Distinguishing uniform from non-uniform variable-arity functions.
\item Dotted type variables and dotted pre-types.
\item Special handling of \scheme|map| on terms with dotted pre-types.
\item Handling of \scheme|apply|.
\end{itemize}
\noindent
This chapter synthesizes those insights into a formal calculus whose
type system is able to statically reject programs that misapply
both uniform and non-uniform variable-arity functions.  
\end{schemeregion}
