\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}