\item Type safe
\item Embedded in Clean
\item Extendable
- \item \ldots\pause{} but\ldots
- \item No interaction
- \item Compilation requires reprogramming
\end{itemize}
\end{block}
\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Expressions}
+ \begin{block}{mTask}
+ \begin{itemize}
+ \item Two phantom types
+ \item Hierarchy
+ \end{itemize}
+ \end{block}
+ \pause{}
+ \begin{lstlisting}
+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}
\subsection{Overview}
\begin{frame}
\frametitle{Solution}
- \begin{itemize}[<+->]
- \item New backend for mTask
- \item Bytecode generation
- \item Interpreter on client
- \item Server in iTasks
- \item Integration with iTasks
- \item No taskserver
- \end{itemize}
+ \begin{block}{Downsides of the current mTask view}
+ \begin{itemize}
+ \item It all seems perfect
+ \item \ldots\pause{} but\ldots
+ \pause{}
+ \item No interaction
+ \item Compilation requires reprogramming
+ \end{itemize}
+ \end{block}
+ \pause{}
+ \begin{block}{Solution}
+ \begin{itemize}[<+->]
+ \item New bytecode backend for mTask
+ \item Interpreter on client
+ \item Server in iTasks
+ \item Integration with iTasks
+ \item No taskserver generation
+ \item Program only once
+ \end{itemize}
+ \end{block}
\end{frame}
\subsection{Extending mTask}