X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=top.combinators.tex;h=8b39db9021f06f1c986a0e5132a9b67ba210378a;hb=a2306329d05c56ee45a7a71e6c09cf1cb5007fc1;hp=64aa98abc76c25f9e22ab0ade39b4911e0cf5042;hpb=6548a5ec9ce8e0df67fc4019625ab5238eb1bf71;p=msc-thesis1617.git diff --git a/top.combinators.tex b/top.combinators.tex index 64aa98a..8b39db9 100644 --- a/top.combinators.tex +++ b/top.combinators.tex @@ -1,8 +1,8 @@ -\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}[% @@ -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.