\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
\end{code}
\end{beamercolorbox}
\begin{itemize}
-\uncover<2->{\item We support Patter Matching}
+\uncover<2->{\item We support Pattern Matching}
\end{itemize}
}\note[itemize]{
\item Alu is both higher-order, and polymorphic
ANN(program TestInput)
program :: [(Opcode, Word, Vector D4 Word, RangedWord D9, RangedWord D9, Bit)]
program =
- [ (Low, 4, copy (0::Word), 0, 0, High) -- Write 4 to Reg0, out = 0
- , (Low, 3, copy (0::Word), 0, 1, High) -- Write 3 to Reg1, out = Reg0 + Reg0 = 8
- , (High,0, copy (3::Word), 1, 0, Low) -- No Write , out = 15
+ [ (Low, 4, copy (0), 0, 0, High) -- Write 4 to Reg0, out = 0
+ , (Low, 3, copy (0), 0, 1, High) -- Write 3 to Reg1, out = 8
+ , (High,0, copy (3), 1, 0, Low) -- No Write , out = 15
]
run func state [] = []