Tasks represent abstract pieces of work and can be combined using combinators.
Creating tasks is done by evaluating expressions.
The result of an evaluated task expression is called a task tree, a run time representation of a task.
-In order to evaluate a task, the resulting task tree is \emph{rewritten}, i.e.\ similar to rewrite systems, they perform a bit of work, step by step.
+In order to evaluate a task, the resulting task tree is \emph{rewritten} using small-step reduction, i.e.\ similar to rewrite systems, they perform a bit of work, step by step.
With each step, a task value is yielded that is observable by other tasks and can be acted upon.
The implementation in the \gls{MTASK} \gls{RTS} for task execution is shown in \cref{chp:implementation}.