--- /dev/null
+\usepackage{listings}
+
+\lstdefinelanguage{Clean}{%
+ alsoletter={ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_`1234567890},
+ alsoletter={~!@\#$\%^\&*-+=?<>:|\\.},
+ morekeywords={generic,implementation,definition,dynamic,module,import,from,where,in,of,case,let,infix,infixr,infixl,class,instance,with,if,derive,Void},
+ sensitive=true,
+ morecomment=[l]{//},
+ morecomment=[n]{/*}{*/},
+ morestring=[b]",
+ morestring=[b]',
+ emptylines=1,
+ basicstyle=\small,
+ identifierstyle=\small\ttfamily,
+ commentstyle=\itshape,
+ keywordstyle=\bfseries,
+ stringstyle=\ttfamily,
+ numbers=none,
+ showstringspaces=false,
+ basewidth=0.45em,
+ columns=[c]fixed,
+ keepspaces=true,
+ breaklines=false,
+ tabsize=4,
+ texcl=true,
+ escapeinside={(\#}{\#)},
+ literate=%
+ % Basic Clean constructs
+ {\\}{{$\lambda\:$}}1
+ {A.}{{$\forall\;\,$}}1
+ {E.}{{$\exists\;\,$}}1
+ {>}{{$>$}}1
+ {<}{{$<$}}1
+ {<=}{{$\leq$}}1
+ {>=}{{$\geq$}}1
+ {<>}{{$\neq$}}1
+ {->}{{$\rightarrow$}}2
+ {<-}{{$\leftarrow$}}1
+ {=}{{$=$}}1
+ {~}{{$\sim$}}1
+ {\#}{{$\sharp$}}1
+ {\{|}{{$\{\!|\!$}}1
+ {|\}}{{$\!|\!\}$}}1
+ {:=}{{$:=$}}2
+ {==}{{$==$}}2
+ {++}{{$+\!\!+$}}2
+ {+++}{{$+\!\!\!\!+\!\!\!\!+$}}2
+ {:==}{{$:==$}}3
+ {\{|*|\}}{{$\{\!|\!\!\star\!\!|\!\}$}}3
+ %
+ % Basic iTask constructs
+ {>||>}{{$\triangleright\triangleright$}}2
+ {>>=}{{\texttt{>>=}}}3
+ {>>|}{{\texttt{>>|}}}3
+ {?>>}{{\texttt{?>>}}}3
+ {!>>}{{\texttt{!>>}}}3
+ {-||-}{{\texttt{-||-}}}4
+ {.||.}{{\texttt{.||.}}}4
+ {.&&.}{{\texttt{.\&\&.}}}4
+}
+
+\newcommand{\CleanInline}[1]{\lstinline[language=Clean]¦#1¦}
+\newcommand{\CI}[1]{\CleanInline{#1}}
+
+\lstdefinestyle{numbers}{numbers=left, stepnumber=1, numberstyle=\tiny, numbersep=5pt}
+
+\lstnewenvironment{CleanCode}{\lstset{language=Clean,identifierstyle=\ttfamily}}{}
+\lstnewenvironment{CleanCodeN}{\lstset{language=Clean,style=numbers}}{}
+\lstnewenvironment{CleanCodeB}{\lstset{language=Clean,frame=single}}{}
+\lstnewenvironment{CleanCodeNB}{\lstset{language=Clean,style=numbers,frame=single}}{}
--- /dev/null
+main = sds \x=1 In sds \pin=1 In
+ { main =
+ IF (digitalRead D3) (
+ x =. x +. lit 1 :. pub x
+ ) ( noOp
+ ) :.
+ IF (pinnetje ==. lit 1) (
+ digitalWrite D0 (lit True)
+ ) ( IF (pinnetje ==. lit 2) (
+ digitalWrite D1 (lit True)
+ ) ( digitalWrite D2 (lit True)
+ )) }
+
+ledOn :: DigitalPin -> Main (ByteCode () Stmt)
+ledOn d = { main = digitalWrite d (lit True) :. noOp }
+
+ledOff :: DigitalPin -> Main (ByteCode () Stmt)
+ledOff d = { main = digitalWrite d (lit False) :. noOp }
\begin{frame}
\frametitle{mTask}
+ \begin{block}{Properties}
+ \begin{itemize}
+ \item Initially developed by Pieter Koopman
+ \item Designed to simulate TOP on microcontrollers
+ \item Type safe
+ \item Shallowly embedded
+ \item Class based and thus extendable with views
+ \pause%
+ \item Current views: Simulation in iTasks, C code generation
+ \pause%
+ \item New view: Bytecode compilation.
+ \end{itemize}
+ \end{block}
+% \begin{table}
+%
+% \caption{Language elements mTask}
+% \end{table}
\end{frame}
\begin{frame}
\frametitle{SDS}
+
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Demo}
+ \lstinputlisting[%
+ caption={mTasks used in the demo},
+ language=Clean,
+ basicstyle=\scriptsize]{demo.listing}
\end{frame}
\begin{frame}