Merge branch 'master' of git.martlubbers.net:msc-thesis1617
[msc-thesis1617.git] / pres.mtask.tex
index d5e24d2..52115ae 100644 (file)
@@ -146,112 +146,112 @@ instance intArith PrettyPrinter where
 \end{frame}
 
 \subsection{mTask}
-%\begin{frame}
-%      \frametitle{mTask}
-%      \pause{}
-%      \begin{block}{What is mTask}
-%              \begin{itemize}
-%                      \item Created by Pieter Koopman and Rinus Plasmeijer
-%                      \item EDSL for imperative programs
-%                      \item Arduino C++ generation, iTasks simulation
-%              \end{itemize}
-%      \end{block}
-%
-%      \begin{block}{Considerations}
-%              \begin{itemize}
-%                      \item Type safe
-%                      \item Embedded in Clean
-%                      \item Extendable
-%              \end{itemize}
-%      \end{block}
-%\end{frame}
-%
-%\begin{frame}[fragile]
-%      \frametitle{Expressions}
-%      \begin{block}{mTask}
-%              Of the form \CI{v t p}
-%      \end{block}
-%      \pause{}
-%      \begin{lstlisting}[language=Clean]
-%class arith v where
-%  lit           :: t -> v t Expr
-%  (+.) infixl 6 :: (v t p) (v t q) -> v t Expr | +, zero t & isExpr p & isExpr q
-%  (-.) infixl 6 :: (v t p) (v t q) -> v t Expr | -, zero t & ...
-%  ...
-%class boolExpr v where
-%  Not           :: (v Bool p) -> v Bool Expr            | ...
-%  (&.) infixr 3 :: (v Bool p) (v Bool q) -> v Bool Expr | ...
-%  ...
-%  (==.) infix 4 :: (v a p) (v a q) -> v Bool Expr       | ...
-%        \end{lstlisting}
-%\end{frame}
-%
-%\begin{frame}[fragile]
-%      \frametitle{Control flow}
-%      \begin{lstlisting}[language=Clean]
-%class IF v where
-%  IF :: (v Bool p) (v t q) (v s r) -> v () Stmt | ...
-%  (?) infix 1 :: (v Bool p) (v t q) -> v () Stmt | ...
-%
-%class seq v where
-%  (:.) infixr 0 :: (v t p) (v u q) -> v u Stmt | ...
-%      \end{lstlisting}
-%\end{frame}
-%
-%\begin{frame}[fragile]
-%      \frametitle{Assignment and Input/Output}
-%      \begin{lstlisting}[language=Clean]
-%:: DigitalPin = D0 | D1 | D2 ...
-%:: AnalogPin  = A0 | A1 | A2 ...
-%
-%class dIO v where dIO :: DigitalPin -> v Bool Upd
-%class aIO v where aIO :: AnalogPin -> v Int Upd
-%
-%class analogRead v where
-%  analogRead :: AnalogPin -> v Int Expr
-%  analogWrite :: AnalogPin (v Int p) -> v Int Expr
-%
-%class digitalRead v where
-%  digitalRead :: DigitalPin -> v Bin Expr
-%  digitalWrite :: DigitalPin (v Bool p) -> v Int Expr
-%  \end{lstlisting}
-%\end{frame}
-%
-%\begin{frame}[fragile]
-%      \frametitle{Shared Data Sources and Assignment}
-%      \begin{lstlisting}[language=Clean]
-%:: In a b = In infix 0 a b
-%:: Main a = {main :: a}
-%
-%class sds v where
-%  sds :: ((v t Upd)->In t (Main (v c s))) -> (Main (v c s)) | ...
-%
-%class assign v where
-%  (=.) infixr 2 :: (v t Upd) (v t p) -> v t Expr | ...
-%      \end{lstlisting}
-%\end{frame}
-%
-%
-%\begin{frame}[fragile]
-%      \frametitle{Tasks and Examples}
-%      \begin{lstlisting}[language=Clean]
-%class mtask v a where
-%      task :: (((v delay r) a -> v MTask Expr) -> In (a->v u p) (Main (v t q)))
-%              -> Main (v t q) | ...
-%      \end{lstlisting}
-%      \pause{}
-%      \begin{lstlisting}[language=Clean]
-%blink = task \blink=(\x.
-%            IF x
-%               (ledOn LED1)
-%               (ledOff LED2) :.
-%            blink (lit 1000) (Not x))
-%        In {main=blink (lit 1000) True}
-%
-%thermostat :: Main (View () Stmt)
-%thermostat = {main = digitalWrite (dIO D0) (analogRead A0 >. lit 50)
-%
-%thermostat2 :: Main (View () Stmt)
-%thermostat = {main = (dIO D0) =. (analogRead A0 >. lit 50)
-%      \end{lstlisting}
-%\end{frame}
+\begin{frame}
+       \frametitle{mTask}
+       \pause{}
+       \begin{block}{What is mTask}
+               \begin{itemize}
+                       \item Created by Pieter Koopman and Rinus Plasmeijer
+                       \item EDSL for imperative programs
+                       \item Arduino C++ generation, iTasks simulation
+               \end{itemize}
+       \end{block}
+
+       \begin{block}{Considerations}
+               \begin{itemize}
+                       \item Type safe
+                       \item Embedded in Clean
+                       \item Extendable
+               \end{itemize}
+       \end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+       \frametitle{Expressions}
+       \begin{block}{mTask}
+               Of the form \CI{v t p}
+       \end{block}
+       \pause{}
+       \begin{lstlisting}[language=Clean]
+class arith v where
+  lit           :: t -> v t Expr
+  (+.) infixl 6 :: (v t p) (v t q) -> v t Expr | +, zero t & isExpr p & isExpr q
+  (-.) infixl 6 :: (v t p) (v t q) -> v t Expr | -, zero t & ...
+  ...
+class boolExpr v where
+  Not           :: (v Bool p) -> v Bool Expr            | ...
+  (&.) infixr 3 :: (v Bool p) (v Bool q) -> v Bool Expr | ...
+  ...
+  (==.) infix 4 :: (v a p) (v a q) -> v Bool Expr       | ...
+         \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+       \frametitle{Control flow}
+       \begin{lstlisting}[language=Clean]
+class IF v where
+  IF :: (v Bool p) (v t q) (v s r) -> v () Stmt | ...
+  (?) infix 1 :: (v Bool p) (v t q) -> v () Stmt | ...
+
+class seq v where
+  (:.) infixr 0 :: (v t p) (v u q) -> v u Stmt | ...
+       \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+       \frametitle{Assignment and Input/Output}
+       \begin{lstlisting}[language=Clean]
+:: DigitalPin = D0 | D1 | D2 ...
+:: AnalogPin  = A0 | A1 | A2 ...
+
+class dIO v where dIO :: DigitalPin -> v Bool Upd
+class aIO v where aIO :: AnalogPin -> v Int Upd
+
+class analogRead v where
+  analogRead :: AnalogPin -> v Int Expr
+  analogWrite :: AnalogPin (v Int p) -> v Int Expr
+
+class digitalRead v where
+  digitalRead :: DigitalPin -> v Bin Expr
+  digitalWrite :: DigitalPin (v Bool p) -> v Int Expr
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+       \frametitle{Shared Data Sources and Assignment}
+       \begin{lstlisting}[language=Clean]
+:: In a b = In infix 0 a b
+:: Main a = {main :: a}
+
+class sds v where
+  sds :: ((v t Upd)->In t (Main (v c s))) -> (Main (v c s)) | ...
+
+class assign v where
+  (=.) infixr 2 :: (v t Upd) (v t p) -> v t Expr | ...
+       \end{lstlisting}
+\end{frame}
+
+
+\begin{frame}[fragile]
+       \frametitle{Tasks and Examples}
+       \begin{lstlisting}[language=Clean]
+class mtask v a where
+       task :: (((v delay r) a -> v MTask Expr) -> In (a->v u p) (Main (v t q)))
+               -> Main (v t q) | ...
+       \end{lstlisting}
+       \pause{}
+       \begin{lstlisting}[language=Clean]
+blink = task \blink=(\x.
+            IF x
+               (ledOn LED1)
+               (ledOff LED2) :.
+            blink (lit 1000) (Not x))
+        In {main=blink (lit 1000) True}
+
+thermostat :: Main (View () Stmt)
+thermostat = {main = digitalWrite (dIO D0) (analogRead A0 >. lit 50)
+
+thermostat2 :: Main (View () Stmt)
+thermostat = {main = (dIO D0) =. (analogRead A0 >. lit 50)
+       \end{lstlisting}
+\end{frame}