Merge branch 'master' of git.martlubbers.net:msc-thesis1617
[msc-thesis1617.git] / mtask.examples.tex
index db15f5f..c502ee6 100644 (file)
@@ -1,32 +1,32 @@
 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.
+functionality --- are shown in Listing~\ref{lst:exmtask}. The \CI{blink}
+\gls{mTask} show the classic \gls{Arduino} blinking \gls{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. Finally a thermostat example is shown that also displays the
+temperature on its \gls{LCD} while regulating the temperature.
 
-\begin{lstlisting}[%
+\begin{lstlisting}[language=Clean,%
        label={lst:exmtask},caption={Some example \gls{mTask}-\glspl{Task}}]
-blink = task \blink=(\x.
+a0 = aIO A0
+d0 = dIO D0
+
+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 = digitalWrite D0 (analogRead A0 >. lit 50) }
+
+thermostat` = {main = d0 =. a0 > lit 50 }
 
-thermostat` :: Main (View () Stmt)
-thermostat` = let 
-  a0 = aIO A0
-  d0 = dIO D0 in {main = IF (a0 >. lit 50) (d0 =. lit True) (d0 =. lit False) }
+thermostat`` = task \th.(\lcd.
+               d0 =. a0 > lit 50 :.
+               print lcd a0      :.
+               th (lit 1000) lim   ) In
+       LCD 16 12 [] \lcd.{main = th (lit 1000) lim }
 \end{lstlisting}