+\section[Desugar_intro]{Introduction}
+
+This pass of the \Haskell{} compiler converts a typechecked program in
+@AbsSyntax@ form into a list of @CoreBinding@s, a much simpler form
+more suitable for subsequent passes. The basic tasks in this
+``desugaring'' are:
+\begin{enumerate}
+\item
+Compile pattern-matching into equivalent code, mainly case-expressions.
+
+\item
+Convert list comprehensions into equivalent code.
+
+\item
+Make explicit all of the implicit activity due to overloading,
+dictionaries, etc., etc.
+\end{enumerate}
+
+For the basic desugaring process, we assume familiarity with Phil
+Wadler's chapter~5 in SLPJ. The code here will be recognizable by the
+avid reader of that chapter. The main difference you will see is that
+this code uses a simple monad to pass around the name supply; if
+you've read much of this compiler's code, the idioms used will be
+grievously familiar.