\section{Evaluation}
All in all we are quite happy with \SPLC. Our added syntactic sugar and the
higher order functions make our implementation of \SPL{} quite comfortable to
program in. Due to the UNIX style interface it is quite easy to combine 
usage of the compiler with \SSM.

There are however of course a lot of things to can be improved. We discuss a few
of the most interesting and most pressing issues. First of all error handling
in \SPLC{} can be greatly improved. Currently a lot of error happen at position
(0,0), most notably all type errors happen at this position. It would be a
great improvement in usability if errors would always be reported at the
correct position. A second issue is that in \SPLC{} it is not possible to
spread a program over multiple modules, when developing larger programs this
would be an absolute requirement. Thirdly \SPLC{} currently does not allow for
multiple recursion, and all functions need to be declared before they are
called. It would be nice to have multiple recursion and to not be forced to
structure your program in the order in which functions are called.

\subsection{Known Bugs}
For higher order functions there is a small bug that when an assignment is done
to a variable with a higher order function type where the number of arguments
is bigger than one and one of the, not-last, arguments is a higher order
functien itself the behaviour is unspecified. The bug happens because the
function is placed on the heap but the heap is distorted because one of the
arguments also modifies the heap. We are certain that with some time we can fix
this problem since it is an assembly issue.

\subsection{Work division}
\begin{description}
	\item [Lexing \& parsing]:
		\begin{description}
		\item [\Yard] Pim
		\item [Lexing] Mart \& Pim
		\item [Parsing] Mostly Mart, some Pim
		\item [Sugar] literal string: Mart, literal lists: Pim, Variable 
			arguments printing: Mart, Let-expansion: Pim, Lambdas: Pim
		\end{description}
	\item [Semantical analysis]:
		\begin{description}
		\item [Sanity checks] Mart
		\item [Type inference] Mostly Pim, some Mart
		\item [Lambda lifting] Pim
		\end{description}
	\item [Code generation]:
		\begin{description}
		\item [RWST monad] Mart
		\item [Basic Generation] Mart \& Pim
		\item [Higher order functions] Mart
		\end{description}
\end{description}

\subsection{Metrics}
Between the February the seventh and June the sixth, $18.283$ lines of code
been written of which $12.497$ have been removed later on. Detailed records
can be found on the open git repository available on
\url{https://github.com/dopefishh/cc1516}. Most of the code is written with
pair programming.

The source code of \SPLC{} contains $2051$ lines of code, the rest of the lines
of code committed can be attributed to the presentations, test programs and
grammar specification.
