add connection diagrams and add todo combinators
[msc-thesis1617.git] / methods.mtask.tex
index 5bdbbb1..67f4b4e 100644 (file)
@@ -68,15 +68,23 @@ as \emph{while} or \emph{for} constructions. The main control flow operators
 are the sequence operator and the \emph{if} statement. Both are shown in
 Listing~\ref{lst:control}. The first class of \emph{If} statements describes
 the regular \emph{if} statement. The expressions given can have any role. The
-functional dependency\todo{explain} on \CI{s} determines the return type of the
-statement.  The sequence operator is very straightforward and just ties the two
-expressions together in sequence.
+functional dependency on \CI{s} determines the return type of the
+statement. The listing includes examples of implementations that illustrate
+this dependency.
+
+The sequence operator is very straightforward and just ties
+the two expressions together in sequence.
 
 \begin{lstlisting}[%
        language=Clean,label={lst:control},caption={Control flow operators}]
 class If v q r ~s where
   If :: (v Bool p) (v t q) (v t r) -> v t s | ...
 
+instance If Code Stmt Stmt Stmt
+instance If Code e    Stmt Stmt
+instance If Code Stmt e    Stmt
+instance If Code x    y    Expr
+
 class seq v where
   (:.) infixr 0 :: (v t p) (v u q) -> v u Stmt | ...
 \end{lstlisting}
@@ -84,9 +92,9 @@ class seq v where
 \section{Input/Output and class extensions}
 Values can be assigned to all expressions that have an \CI{Upd} role. Examples
 of such expressions are \glspl{SDS} and \gls{GPIO} pins. Moreover, class
-extensions can be created for specific peripherals such as builtin LEDs. The
-classes facilitating this are shown in Listing~\ref{lst:sdsio}. In this way the
-assignment is the same for every assignable entity.
+extensions can be created for specific peripherals such as builtin \glspl{LED}.
+The classes facilitating this are shown in Listing~\ref{lst:sdsio}. In this way
+the assignment is the same for every assignable entity.
 
 \begin{lstlisting}[%
        language=Clean,label={lst:sdsio},caption={Input/Output classes}]
@@ -172,7 +180,7 @@ To achieve this in the \gls{EDSL} a \gls{Task} clas are added that work in a
 similar fashion as the \texttt{sds} class. This class is listed in
 Listing~\ref{lst:taskclass}. \glspl{Task} can have an argument and always have
 to specify a delay or waiting time. The type signature of the \CI{mtask} is
-rather arcane and therefore an example is given. The aforementioned Listing
+complex and therefore an example is given. The aforementioned Listing
 shows a simple specification containing one task that increments a value
 indefinitely every one seconds.
 
@@ -189,10 +197,10 @@ Some example \glspl{mTask} using almost all of the functionality are shown in
 Listing~\ref{lst:exmtask}. The \glspl{mTask} shown in the example do not belong
 to a particular view and therefore are of the type \CI{View t r}. The
 \CI{blink} \gls{mTask} show the classic \gls{Arduino} \emph{Hello World!}
-application that blinks a certain LED every second. The \CI{thermostat}
-expression will enable a digital pin powering a cooling fan when the analog
-pin representing a temperature sensor is too high. \CI{thermostat`} shows the
-same expression but now using the assignment style \gls{GPIO} technique.
+application that blinks a certain \gls{LED} every second. The \CI{thermostat}
+expression will enable a digital pin powering a cooling fan when the analog pin
+representing a temperature sensor is too high. \CI{thermostat`} shows the same
+expression but now using the assignment style \gls{GPIO} technique.
 
 \begin{lstlisting}[%
        language=Clean,label={lst:exmtask},caption={Some example \glspl{mTask}}]