add images, update intro, add iTasks intro
[msc-thesis1617.git] / methods.tex
index 8b5b1fe..473efcf 100644 (file)
@@ -1,11 +1,45 @@
 \section{\acrlong{TOP}}
 \gls{TOP} is a recent new programming paradigm implemented as
-\gls{iTasks}~\cite{achten_introduction_2015} in
-the pure lazy functional language \gls{Clean}
+\gls{iTasks}\cite{achten_introduction_2015} in the pure lazy functional
+language \gls{Clean}\cite{brus_cleanlanguage_1987}. \gls{iTasks} is a
+\gls{EDSL} to model workflow tasks in the broadest sense. A \CI{Task} is just
+a function that, given some state, returns the observable value of the
+\CI{TaskValue}. A simple example is shown in Listing~\ref{lst:taskex}
+accompanied with Figure~\ref{fig:taskex1},~\ref{fig:taskex2} and~%
+\ref{fig:taskex3}.
 
-\todo{Main terms}
-The lazy functional programming language based on graph rewriting
-\gls{Clean}~\cite{brus_cleanlanguage_1987}
+\begin{lstlisting}[language=Clean,label={lst:taskex},%
+       caption={An example \gls{Task} for entering a name}]
+:: Name         = { firstname :: String
+                  , lastname  :: String
+                                 }
+
+derive class iTask Name
+
+enterInformation :: String [EnterOption m] -> (Task m) | iTask m
+
+enterName :: Task Name
+enterName = enterInformation "Enter your name" []
+\end{lstlisting}
+
+\begin{figure}[H]
+       \begin{subfigure}{.25\textwidth}
+               \centering
+               \includegraphics[width=.9\linewidth]{taskex1}
+               \caption{Initial interface}\label{fig:taskex1}
+       \end{subfigure}
+       \begin{subfigure}{.25\textwidth}
+               \centering
+               \includegraphics[width=.9\linewidth]{taskex2}
+               \caption{Incomplete entrance}\label{fig:taskex2}
+       \end{subfigure}
+       \begin{subfigure}{.25\textwidth}
+               \centering
+               \includegraphics[width=.9\linewidth]{taskex3}
+               \caption{Complete entry}\label{fig:taskex3}
+       \end{subfigure}
+       \caption{Example of a generated user interface}
+\end{figure}
 
 \section{\acrlong{EDSL}s}
 \glspl{mTask} are expressed in a class based shallowly embedded \gls{EDSL}.
@@ -14,7 +48,9 @@ There are two main types of \glspl{EDSL}.
 \todo{Small deep embedded dsl}
 \todo{Show that class based has the best of both worlds}
 
+\section{Architecture}
 \section{Devices}
+
 The client code for the devices is compiled from one codebase. For a device to
 be eligible for \glspl{mTask} it must be able to compile the shared codebase
 and implement (part of) the device specific interface. The shared codebase only
@@ -25,6 +61,7 @@ listed in Appendix~\label{app:device-interface}\todo{update interface listing},
 also includes functions for accessing the peripherals that not every device
 might have. Devices can choose what to implement by setting the correct macros
 in the top of the file.
+\todo{Supported devices}
 
 \subsection{Specification}
 Devices are stored in a record type and all devices in the system are stored in
@@ -101,3 +138,18 @@ have a unique numeric identifier and an initial value.
 sdsStore :: Shared [MTaskShare]
 \end{lstlisting}
 \todo{Do something with the sharetype}
+
+\subsection{Communication}
+%\todo{Handshake, device specification sending, spec.c}
+%\todo{mTaskDevice class interface}
+
+\section{mTasks}
+\subsection{\gls{EDSL}}
+\todo{Show the classes}
+
+\subsection{Shares}
+\todo{Show the types and why}
+
+Shares are used to store the values 
+
+Shares all have