Some example \gls{mTask}-\glspl{Task} using almost all of their functionality
are shown in Listing~\ref{lst:exmtask}. The \gls{mTask}-\glspl{Task} 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}
blinking led 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. The \CI{thermostat} example also shows that it is not
necessary to run everything as a \CI{task}. The main program code can also just
consist of the contents of the root \CI{main} itself.

\begin{lstlisting}[%
	label={lst:exmtask},caption={Some example \gls{mTask}-\glspl{Task}}]
blink = task \blink=(\x.
		IF (x ==. lit True) (ledOn led) (ledOff led) :.
		blink (lit 1000) (Not x)
	In {main=blink (lit 1000) True}

thermostat :: Main (View () Stmt)
thermostat = {main =
  IF (analogRead A0 >. lit 50)
	( digitalWrite D0 (lit True)  )
    ( digitalWrite D0 (lit False) )
  }

thermostat` :: Main (View () Stmt)
thermostat` = let 
  a0 = aIO A0
  d0 = dIO D0 in {main = IF (a0 >. lit 50) (d0 =. lit True) (d0 =. lit False) }
\end{lstlisting}
