\subsection{Introduction}
\frame
{
-\frametitle{Small Use Case}
+\frametitle{Small Use Case}\pause
\begin{itemize}
- \item Small Polymorphic, Higher-Order CPU
- \item Each function is turned into a hardware component
+ \item Small Polymorphic, Higher-Order CPU\pause
+ \item Each function is turned into a hardware component\pause
\item Use of state will be simple
\end{itemize}
}\note[itemize]{
\frame
{
-\frametitle{Imports}
+\frametitle{Imports}\pause
Import all the built-in types, such as vectors and integers:
\begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
\begin{code}
\subsection{Type Definitions}
\frame
{
-\frametitle{Type definitions}
+\frametitle{Type definitions}\pause
First we define some ALU types:
\begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
\begin{code}
\subsection{Frameworks for Operations}
\frame
{
-\frametitle{Operations}
+\frametitle{Operations}\pause
We make a primitive operation:
\begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
\begin{code}
-primOp :: {-"{\color<3>[rgb]{1,0,0}"-}(a -> a -> a){-"}"-} -> Op s a
+primOp :: {-"{\color<4>[rgb]{1,0,0}"-}(a -> a -> a){-"}"-} -> Op s a
primOp f a b = a `f` a
\end{code}
\end{beamercolorbox}\pause
We make a vector operation:
\begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
\begin{code}
-vectOp :: {-"{\color<3>[rgb]{1,0,0}"-}(a -> a -> a){-"}"-} -> Op s a
-vectOp f a b = {-"{\color<3>[rgb]{1,0,0}"-}foldl{-"}"-} f a b
+vectOp :: {-"{\color<4>[rgb]{1,0,0}"-}(a -> a -> a){-"}"-} -> Op s a
+vectOp f a b = {-"{\color<4>[rgb]{1,0,0}"-}foldl{-"}"-} f a b
\end{code}
\end{beamercolorbox}
\begin{itemize}
-\uncover<3->{\item We support Higher-Order Functionality}
+\uncover<4->{\item We support Higher-Order Functionality}
\end{itemize}
}\note[itemize]{
\item These are just frameworks for 'real' operations
\section{How do you make Hardware from Haskell?}
\frame
{
- \frametitle{So how do you make Hardware from Haskell?}
- \large{In three simple steps} \pause
+ \frametitle{So how do you make Hardware from Haskell?}\pause
+ \large{In three simple steps really:} \pause
\begin{itemize}
\item No Effort:\\
GHC API Parses, Typechecks and Desugars the Haskell code \pause
\end{itemize}
}\note[itemize]{
\item Here is a quick insight as to how WE translate Haskell to Hardware
-\item You can also use TH, like ForSyDe. Or traverse datastructures, like Lava.
+\item You can also use TH, like ForSyDe. Or traverse datastructures, like
+\item We're in luck with the GHC API update of 6.10 and onwards
+\item Normal form is a single lamda and a let expression, every let binder is a simple assignment
}
\ No newline at end of file
\subsection{What is \texorpdfstring{\clash{}}{CLasH}}
\frame
{
- \frametitle{What is \clash{}?}
+ \frametitle{What is \clash{}?}\pause
\begin{itemize}
- \item \clash{}: CAES Language for Hardware Descriptions
- \item Rapid prototyping language
- \item Subset of Haskell can be translated to Hardware (VHDL)
+ \item \clash{}: CAES Language for Hardware Descriptions\pause
+ \item Rapid prototyping language\pause
+ \item Subset of Haskell can be translated to Hardware (VHDL)\pause
\item Structural Description of a Mealy Machine
\end{itemize}
}