--- /dev/null
+\section{Recursion}
+%include talk.fmt
+\frame{
+\frametitle{Future Work: Recursion}
+\begin{itemize}
+ \item The most pressing future work is to support recursive functions.
+ \item Partially explored solution: static loop unrolling
+ \item Unexplored solution: Haskell language extensions, new source language
+\end{itemize}
+}
+
+\subsection{Static loop unrolling}
+\frame{
+\frametitle{Static loop unrolling}
+\begin{itemize}
+ \item Unroll, and simplify recursive definitions at compile time.
+ \item Explored solution: Unrolling number-guided recursive functions using Template Haskell
+\end{itemize}
+}
+
+\frame{
+\frametitle{Template Haskell}
+\begin{itemize}
+ \item Template Haskell allows for compile-time inspection, construction, and manipulation of Haskell code.
+ \item All these functions are expressible in normal Haskell
+\end{itemize}
+}
+
+\frame{
+\frametitle{Tree Adder}
+\begin{verbatim}
+$(do
+ [typ, _] <- [d|{
+treeSum :: Vector D8 (SizedWord D8) -> SizedWord D8;
+treeSum xs = undefined
+ }|]
+ [func] <- [d|{
+treeSum i xs | i < 1 = head xs
+ | otherwise = let (a,b) = split xs
+ in (treeSum (i-1) a) +
+ (treeSum (i-1) b)
+ }|]
+ let func' = unroll Nothing 0 (IntegerL 3) funct
+ return [typ,func']
+)
+\end{verbatim}
+}
+
+\begin{frame}
+ \frametitle{Unrolled tree adder}
+ \begin{figure}
+ \includegraphics[height=5cm]{treeadder}
+ \end{figure}
+\end{frame}
+
+\subsection{Input Language}
+\frame{
+\frametitle{Input Language}
+\begin{itemize}
+ \item New source language: One of the problems is that Haskell does not properly support dependent types. Investigate languages with dependent type systems.
+ \item Haskell extentions: Invariant descriptions at the type-level.
+\end{itemize}
+}
\ No newline at end of file