Merge branch 'master' of git.martlubbers.net:msc-thesis1617
[msc-thesis1617.git] / top.combinators.tex
index 64aa98a..a60dab0 100644 (file)
@@ -1,11 +1,11 @@
-\Glspl{Task} can be combined using so called \gls{Task}-combinators.
-Combinators describe relations between \glspl{Task}. There are only two basic
-types of combinators; parallel and sequence. All other combinators are
-derived from the basic combinators. Type signatures of simplified versions of
-the basic combinators and their derivations are given in
+\Glspl{Task} in \gls{iTasks} can be combined using so called
+\gls{Task}-combinators.  Combinators describe relations between \glspl{Task}.
+There are only two basic types of combinators; parallel and sequence. All other
+combinators are derived from the basic combinators. Type signatures of
+simplified versions of the basic combinators and their derivations are given in
 Listing~\ref{lst:combinators}
 
-\begin{lstlisting}[%
+\begin{lstlisting}[language=Clean,%
        caption={\Gls{Task}-combinators},label={lst:combinators}]
 //Step combinator
 (>>=)  infixl 1 :: (Task a) (a -> Task b)         -> Task b   | iTask a & iTask b
@@ -25,16 +25,15 @@ Listing~\ref{lst:combinators}
 \end{lstlisting}
 
 \paragraph{Sequence:}
-The implementation for the sequence combinator is called the
-\CI{step} (\CI{>>*}). This combinator runs the left-hand \gls{Task} and
-starts the right-hand side when a certain predicate holds. Predicates
-can be propositions about the \CI{TaskValue}, user actions from within
-the web browser or a thrown exception. The familiar
-bind-combinator is an example of a sequence combinator. This combinator
-runs the left-hand side and continues to the right-hand \gls{Task} if
-there is an \CI{UnStable} value and the user presses continue or when
-the value is \CI{Stable}. The combinator could have been implemented
-as follows:
+The implementation for the sequence combinator is called the \CI{step}
+(\CI{>>*}). This combinator runs the left-hand \gls{Task} and starts the
+right-hand side when a certain predicate holds. Predicates can be propositions
+about the \CI{TaskValue}, user actions from within the web browser or a thrown
+exception. The familiar bind-combinator is an example of a sequence combinator.
+This combinator runs the left-hand side and continues to the right-hand
+\gls{Task} if there is an \CI{UnStable} value and the user presses continue or
+when the value is \CI{Stable}. The combinator could have been implemented as
+follows:
 \begin{lstlisting}[language=Clean]
 (>>=) infixl 1 :: (Task a) (a -> (Task b)) -> (Task b) | iTask a & iTask b
 (>>=) ta f = ta >>* [OnAction "Continue" onValue, OnValue onStable]
@@ -47,8 +46,8 @@ as follows:
 \end{lstlisting}
 
 \paragraph{Parallel:}
-The parallel combinator allows for concurrent \glspl{Task}. The
-\glspl{Task} combined with these operators will appear at the same time
-in the web browser of the user and the results are combined as the type
-dictates. All parallel combinators used are derived from the basic parallel
-combinator that is very complex and only used internally.
+The parallel combinator allows for concurrent \glspl{Task}. The \glspl{Task}
+combined with these operators will appear at the same time in the web browser
+of the user and the results are combined as the type dictates. All parallel
+combinators used are derived from the basic parallel combinator that is very
+complex and only used internally.