X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Fhaskell-symposium-talk.git;a=blobdiff_plain;f=introduction.lhs;fp=introduction.lhs;h=c7b0bca887d2cd4873a66393c3253dd86c5f8a13;hp=e0a72ff95d137aebdd7126a26048a326f4c4e69c;hb=d514bd151f4bd5bbb5ae6828902a778222de9738;hpb=bb178ef5c75d6adf38295303902670365634319c diff --git a/introduction.lhs b/introduction.lhs index e0a72ff..c7b0bca 100644 --- a/introduction.lhs +++ b/introduction.lhs @@ -15,70 +15,65 @@ { \item We are a Computer Architectures group, this has been a Masters' project, no prior experience with Haskell. \item \clash{} is written in Haskell, of course -\item \clash{} is currently meant for rapid prototyping, not verification of hardware desigs +\item \clash{} is currently meant for rapid prototyping, not verification of hardware designs \item Functional languages are close to Hardware \item We can only translate a subset of Haskell \item All functions are descriptions of Mealy Machines } -\subsection{Mealy Machine} -\frame -{ -\frametitle{What is a Mealy Machine again?} - \begin{figure} - \centerline{\includegraphics[width=10cm]{mealymachine}} - \label{img:mealymachine} - \end{figure} -} -\note[itemize]{ -\item Mealy machine bases its output on current input and previous state -\item: TODO: Integrate this slide with the next two. First, show the picture -with the mealyMachine type signature (and rename it to "func"). Then, show the -run function, without type signature. Focus is on correspondence to the -picture. -} +% \subsection{Mealy Machine} +% \frame +% { +% \frametitle{What is a Mealy Machine again?} +% \begin{figure} +% \centerline{\includegraphics[width=10cm]{mealymachine}} +% \label{img:mealymachine} +% \end{figure} +% } +% \note[itemize]{ +% \item Mealy machine bases its output on current input and previous state +% \item: TODO: Integrate this slide with the next two. First, show the picture +% with the mealyMachine type signature (and rename it to "func"). Then, show the +% run function, without type signature. Focus is on correspondence to the +% picture. +% } \frame { \frametitle{Haskell Description} +\begin{figure} +\centerline{\includegraphics<1>[width=6.25cm]{mealymachine2} +\includegraphics<2>[width=6.25cm]{mealymachine2-func-red} +\includegraphics<3>[width=6.25cm]{mealymachine2-state-red}} +\label{img:mealymachine} +\end{figure} \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox} \begin{code} -mealyMachine :: - InputSignals -> - {-"{\color<2>[rgb]{1,0,0}"-}State{-"}"-} -> - (State, OutputSignals) +run func {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} [] = [] +run func {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} (i:inputs) = o:outputs + where + ({-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-}, o) = {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} i {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} + outputs = run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-} input \end{code} \end{beamercolorbox} -\begin{itemize} -\uncover<2->{\item Current state is part of the input} -\uncover<3->{\item New state is part of the output} -\end{itemize} } \note[itemize]{ \item State is part of the function signature \item Both the current state, as the updated State } -\subsection{Simulation} \frame { -\frametitle{Simulating a Mealy Machine} +\frametitle{Haskell Description} +\begin{figure} +\centerline{\includegraphics[width=6.25cm]{mealymachine2-func-red}} +\end{figure} \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox} \begin{code} -run func {-"{\color<2>[rgb]{1,0,0}"-}state{-"}"-} [] = [] -run func {-"{\color<2>[rgb]{1,0,0}"-}state{-"}"-} (i:input) = o:out - where - ({-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-}, o) = func i {-"{\color<2>[rgb]{1,0,0}"-}state{-"}"-} - out = run func {-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-} input +func :: + InputSignal -> + State -> + (State, OutputSignal) \end{code} \end{beamercolorbox} -\begin{itemize} -\item State behaves like an accumulator -\item Input is a (normal) list of inputs, one for each cycle -\end{itemize} } -\note[itemize]{ -\item This is just a quick example of how we can simulate the mealy machine -\item It sort of behaves like MapAccumN -} -