add relevant research
[msc-thesis1617.git] / methods.top.tex
index 174a783..c479f49 100644 (file)
@@ -1,5 +1,4 @@
-\section{\acrlong{TOP}}
-\subsection{\gls{iTasks}}
+\section{iTasks}
 \gls{TOP} is a recent programming paradigm implemented as
 \gls{iTasks}\cite{achten_introduction_2015} in the pure lazy functional
 language \gls{Clean}\cite{brus_cleanlanguage_1987}. \gls{iTasks} is a
 \gls{TOP} is a recent programming paradigm implemented as
 \gls{iTasks}\cite{achten_introduction_2015} in the pure lazy functional
 language \gls{Clean}\cite{brus_cleanlanguage_1987}. \gls{iTasks} is a
@@ -66,7 +65,7 @@ functions that are captured in the class \CI{iTask}. Basic types have
 specialization instances for these functions and show an according interface.
 Generated interfaces can be modified with decoration operators.
 
 specialization instances for these functions and show an according interface.
 Generated interfaces can be modified with decoration operators.
 
-\subsection{Combinators}
+\section{Combinators}
 \Glspl{Task} can be combined using so called \gls{Task}-combinators.
 Combinators describe relations between \glspl{Task}. \Glspl{Task} can be
 combined in parallel, sequenced and their result values can be converted to
 \Glspl{Task} can be combined using so called \gls{Task}-combinators.
 Combinators describe relations between \glspl{Task}. \Glspl{Task} can be
 combined in parallel, sequenced and their result values can be converted to
@@ -87,8 +86,8 @@ basic combinators are shown in Listing~\ref{lst:combinators}.
         onValue (Value a _)     = Just (f a)
         onValue _               = Nothing
 
         onValue (Value a _)     = Just (f a)
         onValue _               = Nothing
 
-               onStable (Value a True) = Just (f a)
-               onStable _              = Nothing
+        onStable (Value a True) = Just (f a)
+        onStable _              = Nothing
                \end{lstlisting}
        \item Parallel:
 
                \end{lstlisting}
        \item Parallel:
 
@@ -117,5 +116,24 @@ basic combinators are shown in Listing~\ref{lst:combinators}.
 (-&&-) infixr 4 :: (Task a) (Task b)              -> Task (a,b) | iTask a & iTask b
 \end{lstlisting}
 
 (-&&-) infixr 4 :: (Task a) (Task b)              -> Task (a,b) | iTask a & iTask b
 \end{lstlisting}
 
-\subsection{\acrlongpl{SDS}}
+\section{\acrlongpl{SDS}}
+\Glspl{SDS} are an abstraction over resources that are available in the world
+or in the \gls{iTasks} system. The shared data can be a file on disk, it can be
+the time, a random integer or just some data stored in memory. The actual
+\gls{SDS} is just a record containing functions on how to read and write the
+source. In these functions the \CI{*World} is available and therefore it can
+interact with the outside world. The \CI{*IWorld} is also available and
+therefore the functions can also access other shares, possibly combining them.
+
+The basic operations for \glspl{SDS} are get, set and update. The signatures
+for these functions are shown in Listing~\ref{lst:shares}. All of the
+operations are atomic in the sense that during reading no other tasks are
+executed.
+
+\begin{lstlisting}[%
+       language=Clean,label={lst:shares},caption={\Gls{SDS} functions}]
+get ::          (ReadWriteShared r w)           -> Task r | iTask r
+set :: w        (ReadWriteShared r w)           -> Task w | iTask w
+upd :: (r -> w) (ReadWriteShared r w)           -> Task w | iTask r & iTask w
 
 
+\end{lstlisting}