From c6fa9017e897e847334aeee2cec0b9aadec6f7c5 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Fri, 4 Mar 2022 15:21:39 +0100 Subject: [PATCH] stab at some chapters --- .chktexrc | 19 + acknowledgements.tex | 14 +- an_appendix.tex | 0 appendix/clean_for_haskell_programmers.tex | 222 ++++ dedication.tex | 2 +- domain_specific_languages.tex | 17 +- domain_specific_languages/dsl_techniques.tex | 132 ++ glossaries.tex | 36 +- introduction.tex | 178 ++- lst/Clean System Files/expr_gadt.abc | 254 ++++ lst/Clean System Files/expr_gadt.o | Bin 0 -> 9809 bytes lst/Clean System Files/generic_eq.abc | 891 ++++++++++++++ lst/Clean System Files/generic_eq.o | Bin 0 -> 36493 bytes lst/Clean System Files/generic_print.abc | 1165 ++++++++++++++++++ lst/Clean System Files/generic_print.o | Bin 0 -> 61163 bytes lst/Makefile | 12 + lst/example_deep.hs | 51 + lst/expr_gadt | Bin 0 -> 345712 bytes lst/expr_gadt.hs | 17 + lst/expr_gadt.icl | 24 + lst/generic_eq | Bin 0 -> 357960 bytes lst/generic_eq.icl | 24 + lst/generic_print | Bin 0 -> 362680 bytes lst/generic_print.icl | 23 + motto.tex | 22 +- preamble.tex | 104 +- thesis.bib | 291 ++++- thesis.tex | 16 +- titlepage.tex | 3 +- 29 files changed, 3479 insertions(+), 38 deletions(-) delete mode 100644 an_appendix.tex create mode 100644 appendix/clean_for_haskell_programmers.tex create mode 100644 domain_specific_languages/dsl_techniques.tex create mode 100644 lst/Clean System Files/expr_gadt.abc create mode 100644 lst/Clean System Files/expr_gadt.o create mode 100644 lst/Clean System Files/generic_eq.abc create mode 100644 lst/Clean System Files/generic_eq.o create mode 100644 lst/Clean System Files/generic_print.abc create mode 100644 lst/Clean System Files/generic_print.o create mode 100644 lst/Makefile create mode 100644 lst/example_deep.hs create mode 100755 lst/expr_gadt create mode 100644 lst/expr_gadt.hs create mode 100644 lst/expr_gadt.icl create mode 100755 lst/generic_eq create mode 100644 lst/generic_eq.icl create mode 100755 lst/generic_print create mode 100644 lst/generic_print.icl diff --git a/.chktexrc b/.chktexrc index e69de29..a7c8d73 100644 --- a/.chktexrc +++ b/.chktexrc @@ -0,0 +1,19 @@ +CmdLine { + -v +} +VerbEnvir { + lstinline lstlisting algorithm code spec lstClean lstHaskell +} +WipeArg { + \cleaninline:{} + \haskellinline:{} + \texttt:{} + \url:{} + \only:{} +} +Silent { + \pause +} +MathEnvir { + code +} diff --git a/acknowledgements.tex b/acknowledgements.tex index 6d9fab6..56c68f9 100644 --- a/acknowledgements.tex +++ b/acknowledgements.tex @@ -1,8 +1,18 @@ Funding: Teun de Groot, Ton van Heusden + Supervisors: Pieter Koopman, Rinus Plasmeijer, Jan-Martin Jansen -Colleagues: Jurriën Stutterheim, Laszlo Domoslai, Arjan Oortgiese, Bas Lijnse, Steffen Michels, Markus Klinik, Tim Steenvoorden, Camil Staps, Hans-Nikolai Vießmann -Ralf Hinze, John van Groningen, Sven-Bodo Scholz, Sjaak Smetserrs, Fok Bolderheij +Colleagues: Jurriën Stutterheim, Laszlo Domoslai, Arjan Oortgiese, Bas Lijnse, Steffen Michels, Markus Klinik, Tim Steenvoorden, Camil Staps, Hans-Nikolai Vie\ss{}mann, John van Groningen, Sven-Bodo Scholz, Sjaak Smetsers, Fok Bolderheij, Simone Meeuwsen, Peter Achten + +Co-authors: Jeremy Singer, Phil Trinder, Adrian Ramsigh \todo{Second assessor clients weglaten?: Willem, Dave, Gijs} Students: Matheus Amazonas Cabral de Andrade, Haye B\"ohm, Erin van der Veen, Colin de Roos, Willem de Vos, Michel de Boer, Dave Artz, Sjoerd Crooijmans, Gijs Alberts, Arjen Nederveen + +Mentors: Jos Baack, Francisco Torreira, Franc Grootjen, the late Louis Vuurpijl, Ralf Hinze + +Friends: Pieter Wolfert and Annerieke Wessels; Chris Kamphuis and Maudy Bijen; Koen Dercksen and Michelle Everard; George Gregoire; Larry Caruthers; Tim Hirschler. + +Family: Parents (in law), brothers (in law), oma, + +Marie-José van Diem diff --git a/an_appendix.tex b/an_appendix.tex deleted file mode 100644 index e69de29..0000000 diff --git a/appendix/clean_for_haskell_programmers.tex b/appendix/clean_for_haskell_programmers.tex new file mode 100644 index 0000000..715964c --- /dev/null +++ b/appendix/clean_for_haskell_programmers.tex @@ -0,0 +1,222 @@ +While \gls{CLEAN} and \gls{HASKELL} were both conceived around 1987 and have similar syntax, there are some subtle differences in syntax and functionality. +This section describes some of the history of \gls{CLEAN} and provides a crash course in \gls{CLEAN} pecularities writen for \gls{HASKELL} programmers. + +\Gls{CLEAN}---acronym for Clean \acrlong{LEAN}~\cite{barendregt_towards_1987}---, was originally designed as a \gls{GRS} core language but quickly served as an intermediate language for other functional languages~\cite{brus_clean_1987}. +In the early days it has also been called \emph{Concurrent} \gls{CLEAN}~\cite{nocker_concurrent_1991} but these days the language has no support for this anymore. +Fast forward thirty years, \gls{CLEAN} is now a robust language with state-of-the-art features and is actually used in industry as well as academia---albeit in select areas of the world~\cite{plasmeijer_clean_2021}. + +Initially, when it was used mostly as an intermediate language, it had a fairly spartan syntax. +However, over the years, the syntax got friendlier and it currently it looks a lot like \gls{HASKELL}. +In the past, a \emph{double-edged} fronted even existed that allowed \gls{CLEAN} to be extended with \gls{HASKELL98} syntax and vice versa, however this frontend is no longer maintained~\cite{groningen_exchanging_2010}. +This chapter therefore gives a brief syntactical and functional comparison, a complete specification of the \gls{CLEAN} language can be found in the latest language report~\cite{plasmeijer_clean_2021}. +Many of this is based on work by Achten although that was based on \gls{CLEAN} 2.1 and \gls{HASKELL98}~\cite{achten_clean_2007}. +When \gls{HASKELL} is mentioned I actually mean \gls{GHC}'s \gls{HASKELL} and by \gls{CLEAN} I mean \gls{CLEAN} 3.1's \gls{ITASK} compiler. + +\section{Features} +\subsection{Modules} +\Gls{CLEAN} has separate implementation and definition modules. +The definition module contains the class definitions, instances, function types and type definitions (possibly abstract). +Implementation modules contain the function implementations as well. +This means that only what is defined in the definition module is exported in \gls{CLEAN}. +This differs greatly from \gls{HASKELL}, as there is only a module file there. +Choosing what is exported in \gls{HASKELL} is done using the \haskellinline{module Mod(...)} syntax. + +\subsection{Strictness} +In \gls{CLEAN}, by default, all expressions are evaluated lazily. +Types can be annotated with a strictness attribute (\cleaninline{!}), resulting in the values being evaluated to head-normal form before the function is entered. +In \gls{HASKELL}, in patterns, strictness can be enforced using \haskellinline{!}\requiresGHCmod{BangPatterns}. +Within functions the strict let (\cleaninline{#!}) can be used to force evaluate an expression, in \gls{HASKELL} \haskellinline{seq} or \haskellinline{\$!} is used for this. + +\subsection{Uniqueness typing} +Types in \gls{CLEAN} may be \emph{unique}, which means that they may not be shared\todo{cite}. +The uniqueness type system allows the compiler to generate efficient code because unique data structures can be destructively updated. +Furthermore, uniqueness typing serves as a model for side effects as well. +\Gls{CLEAN} uses the \emph{world-as-value} paradigm where \cleaninline{World} represents the external environment and is always unique. +A program with side effects is characterised by a \cleaninline{Start :: *World -> *World} start function. +In \gls{HASKELL}, interaction with the world is done using the \haskellinline{IO} monad. +The \haskellinline{IO} monad could very well be---and actually is---implemented in \gls{CLEAN} using a state monad with the \cleaninline{World} as a state. +Besides marking types as unique, it is also possible to mark them with uniqueness attributes variables \cleaninline{u:} and define constraints on them. +For example, to make sure that an argument of a function is at least as unique as another argument. +Finally, using \cleaninline{.} (a dot), it is possible to state that several variables are equally unique. +Uniqueness is propagated automatically in function types but must be marked manually in data types. +Examples can be seen in \cref{lst:unique_examples}. + +\begin{lstClean}[label={lst:unique_examples},caption={Examples of uniqueness annotations}] +f :: *a -> *a // f works on unique values only +f :: .a -> .a // f works on unique and non-unique values +f :: v:a u:b -> u:b, [v<=u] // f works when a is less unique than b +\end{lstClean} +%f :: (Int, *World) -> *World // The uniqueness is propagated automatically (i.e. *(Int, *World))) +%:: T = T *(Int, *World) // Writing :: T = T (Int, *World) won't work +%:: T = T (Int -> *(*World -> *World)) // Writing :: T = T (Int *World -> *World) won't work + +\subsection{Expressions} +\todo[inline]{Matches pattern expression \texttt{=:}} + +\todo[inline]{Let before} + +\subsection{Generics} +Polytypic functions~\cite{jeuring_polytypic_1996}---also known as generic or kind-indexed fuctions---are built into \gls{CLEAN}~\cite[Chp.~7.1]{plasmeijer_clean_2021}\cite{alimarine_generic_2005} whereas in \gls{HASKELL} they are implemented as a library~\cite[Chp.~6.19.1]{ghc_team_ghc_2021}. +%When calling a generic function, the kind must always be specified and depending on the kind, the function may require more arguments. + +For example, defining a generic equality is done as in \cref{lst:generic_eq}. +\lstinputlisting[language=Clean,firstline=4,label={lst:generic_eq},caption={Generic equality function in \gls{CLEAN}.}.]{lst/generic_eq.icl} + +Metadata about the types is available using the \cleaninline{of} syntax that gives the function access to metadata records, as can be seen in \cref{lst:generic_print} showing a generic print function. This abundance of metadata allows for very complex generic functions that near the expression level of template metaprogramming\todo[inline]{crossref chapter c-code generation}. +\lstinputlisting[language=Clean,firstline=4,label={lst:generic_print},caption={Generic print function in \gls{CLEAN}.}]{lst/generic_print.icl} + +\subsection{\glsentrytext{GADT}s} +GADTs are enriched data types that allow the type instantiation of the constructor to be explicitly defined~\cite{cheney_first-class_2003,hinze_fun_2003}. +While \glspl{GADT} are not natively supported in \gls{CLEAN}, they can be simulated using embedding-projection pairs or equivalence types~\cite[Sec.~2.2]{cheney_lightweight_2002}. +To illustrate this, \cref{lst:gadt_clean} shows an example \gls{GADT} that would be implemented in \gls{HASKELL} as done in \cref{lst:gadt_haskell}\requiresGHCmod{GADTs}. + +\lstinputlisting[language=Clean,firstline=4,label={lst:gadt_clean},caption={Expression \gls{GADT} using equivalence types in \gls{CLEAN}.}]{lst/expr_gadt.icl} +\lstinputlisting[language=Haskell,style=haskell,firstline=4,label={lst:gadt_haskell},caption={Expression \gls{GADT} in \gls{HASKELL}.}]{lst/expr_gadt.hs} + +\section{Syntax} +\begin{longtable}{p{.45\linewidth}p{.5\linewidth}} + \caption[]{Syntactical differences between \gls{CLEAN} and \gls{HASKELL}.}% + \label{tbl:syn_clean_haskell}\\ + \toprule + \gls{CLEAN} & \gls{HASKELL}\\ + \midrule + \endfirsthead% + \caption[]{(continued)}\\ + \toprule + \gls{CLEAN} & \gls{HASKELL}\\ + \midrule + \endhead% + + \midrule + \multicolumn{2}{c}{Comments}\\ + \midrule + \cleaninline{// single line} & \haskellinline{-- single line}\\ + \cleaninline{/* multi line /* nested */ */} & \haskellinline{\{- multi line \{- nested -\} \}}\\ + + \midrule + \multicolumn{2}{c}{Imports}\\ + \midrule + \cleaninline{import Mod => qualified f1, :: t} & \haskellinline{import qualified Mod (f1, t)}\\ + & \haskellinline{import Mod hiding (f1, t)}\\ + \cleaninline{/* multi line /* nested */ */} & \haskellinline{\{- multi line \{- nested -\} \}}\\ + + \midrule + \multicolumn{2}{c}{Basic types}\\ + \midrule + \cleaninline{42 :: Int} & \haskellinline{42 :: Int}\\ + \cleaninline{True :: Bool} & \haskellinline{True :: Bool}\\ + \cleaninline{toInteger 42 :: Integer} & \haskellinline{42 :: Integer}\\ + \cleaninline{38.0 :: Real} & \haskellinline{38.0 :: Float -- or Double}\\ + \cleaninline{"Hello" +++ "World" :: String}\footnote{Strings are represented as unboxed character arrays.} + & \haskellinline{"Hello" ++ "World" :: String}\footnote{Strings are represented as lists of characters by default but may be overloaded as well if \GHCmod{OverloadedStrings} is enabled.}\\ + \cleaninline{['Hello'] :: [Char]} & \haskellinline{"Hello" :: String}\\ + \cleaninline{?t} & \haskellinline{Maybe t}\\ + \cleaninline{(?None, ?Just e)} & \haskellinline{(Nothing, Just e)}\\ + + \midrule + \multicolumn{2}{c}{Type definitions}\\ + \midrule + \cleaninline{:: T a0 ... :== t} & \haskellinline{type T a0 ... = t}\\ + \cleaninline{:: T a0 ... } & \haskellinline{data T a1 ...}\\ + \quad\cleaninline{= C1 f0 ... fn \| ... \| Cn f0 ... fn} & \quad\haskellinline{= C1 f0 ... fn \| ... \| Cn f0 ... fn}\\ + \cleaninline{:: T a0 ...} & \haskellinline{data T a0 ...}\\ + \quad\cleaninline{= \{ f0 :: t0, ..., fn :: tn \} } & \quad\haskellinline{= T \{ f0 :: t0, ..., fn :: tn \} }\\ + \cleaninline{:: T a0 ... =: t} & \haskellinline{newtype T a0 ... = t}\\ + \cleaninline{:: T = E.t Box t \& C t} & \haskellinline{data T = forall t.C t => Box t}\requiresGHCmod{ExistentialQuantification}\\ + + \midrule + \multicolumn{2}{c}{Function types}\\ + \midrule + \cleaninline{f0 :: a0 a1 ... -> t} + & \haskellinline{f0 :: (c0 v0, c1 v1, c2 v2) =>}\\ + \quad\cleaninline{\| c0 v0 \& c1, c2 v1} + & \quad\haskellinline{a0 -> a1 ... -> t}\\ + \cleaninline{(+) infixl 6 :: Int Int -> Int} & \haskellinline{infixl 6 +}\\ + & \haskellinline{(+) :: Int -> Int -> Int}\\ + \cleaninline{qid :: (A.a: a -> a) -> (Bool, Int)} + & \haskellinline{qid :: (forall a: a -> a) -> (Bool, Int)}\requiresGHCmod{RankNTypes}\\ + \cleaninline{qid id = (id True, id 42)} & + \haskellinline{qid id = (id True, id 42)}\\ + + \midrule + \multicolumn{2}{c}{Type classes}\\ + \midrule + \cleaninline{class f a :: t} & \haskellinline{class f a where f :: t}\\ + \cleaninline{class C a \| C0, ... , Cn a}\footnote{In contrast to the \gls{HASKELL} variant, this does not require an instance.} & \haskellinline{class (C0 a, ..., Cn, a) => C a}\\ + \cleaninline{class C s ~m where ...} & \haskellinline{class C s m \| m -> s where ...}\requiresGHCmod{MultiParamTypeClasses}\\ + \cleaninline{instance C t \| C0, ..., Cn a} & \haskellinline{instance (C0 a, ..., Cn a) => C t}\\ + \quad\cleaninline{where ...} & \quad\haskellinline{where ...}\\ + + \midrule + \multicolumn{2}{c}{As pattern}\\ + \midrule + \cleaninline{x=:p} & \haskellinline{x@p}\\ + + \midrule + \multicolumn{2}{c}{Lists}\\ + \midrule + \cleaninline{[1,2,3]} & \haskellinline{[1,2,3]}\\ + \cleaninline{[x:xs]} & \haskellinline{x:xs}\\ + \cleaninline{[e \\\\ e <- xs \| p e]} & \haskellinline{[e \| e <- xs, p e]}\\ + \cleaninline{[l \\\\ l <- xs, r <- ys]} & \haskellinline{[l \| l <- xs, r <- ys]}\\ + \cleaninline{[(l, r) \\\\ l <- xs \& r <- ys]} & \haskellinline{[(l, r) \| (l, r) <- zip xs ys]}\\ + & or \haskellinline{[(l, r) \| l <- xs \| r <- ys]}\requiresGHCmod{ParallelListComp}\\ + + \midrule + \multicolumn{2}{c}{Lambda expressions}\\ + \midrule + \cleaninline{\\a0 a1 ...->e} or \cleaninline{\\....e} or \cleaninline{\\...=e} & \haskellinline{\\a0 a1 ...->e}\\ + + \midrule + \multicolumn{2}{c}{Case distinction}\\ + \midrule + \cleaninline{if p e0 e1} & \haskellinline{if p then e0 else e1}\\ + \cleaninline{case e of p0 -> e0; ...} & \haskellinline{case e of p0 -> e0; ...}\\ + \quad or \cleaninline{case e of p0 = e0; ...}\\ + \cleaninline{f p0 ... pn} & \haskellinline{f p0 ... pn}\\ + \quad\cleaninline{\| c = t} & \quad\haskellinline{\| c = t}\\ + \quad\cleaninline{\| otherwise = t} or \cleaninline{= t} & \quad\haskellinline{\| otherwise = t}\\ + + \midrule + \multicolumn{2}{c}{Record expressions}\\ + \midrule + \cleaninline{:: R = \{ f :: t \}} & \haskellinline{data R = R \{ f :: t \}}\\ + \cleaninline{r = \{ f = e \}} & \haskellinline{r = R \{e\}}\\ + \cleaninline{r.f} & \haskellinline{f r}\\ + \cleaninline{r!f}\footnote{This operator allows for field selection from unique records.} & \haskellinline{(\\v->(f v, v)) r}\\ + \cleaninline{\{r \& f = e \}} & \haskellinline{r \{ f = e \}}\\ + + \midrule + \multicolumn{2}{c}{Record patterns}\\ + \midrule + \cleaninline{:: R0 = \{ f0 :: R1 \}} & \haskellinline{data R0 = R0 \{ f0 :: R1 \}}\\ + \cleaninline{:: R1 = \{ f1 :: t \}} & \haskellinline{data R1 = R1 \{ f1 :: t \}}\\ + \cleaninline{g \{ f0 \} = e f0} & \haskellinline{g (R0 \{f0=x\}) = e x}\\ + & or \haskellinline{g (R0 \{f0\}) = e f0}\requiresGHCmod{RecordPuns}\\ + \cleaninline{g \{ f0 = \{f1\} \} = e f1} & \haskellinline{g (R0 \{f0=R1 \{f1=x\}\}) = e x}\\ + + \midrule + \multicolumn{2}{c}{Arrays}\\ + \midrule + \cleaninline{:: A :== \{t\}} & \haskellinline{type A = Array Int t}\\ + \cleaninline{a = \{v0, ..., vn\}} & \haskellinline{a = array (0, n+1)}\\ + & \quad\haskellinline{[(0, v0), ..., (n, vn)]}\\ + \cleaninline{a = \{e \\\\ p <-: a\}} & \haskellinline{a = array (0, length a-1)}\\ + & \quad\haskellinline{[e \| (i, a) <- [0..] `zip` a]}\\ + \cleaninline{a.[i]} & \haskellinline{a!i}\\ + \cleaninline{a![i]}\footnote{This operator allows for field selection from unique arrays.} & \haskellinline{(\v->(v!i, v)) a}\\ + \cleaninline{\{ a \& [i] = e\}} & \haskellinline{a//[(i, e)]}\\ + + \midrule + \multicolumn{2}{c}{Dynamics}\\ + \midrule + \cleaninline{f :: a -> Dynamic \| TC a} & \haskellinline{f :: Typeable a => a -> Dynamic}\\ + \cleaninline{f e = dynamic e} & \haskellinline{f e = toDyn (e)}\\ + \cleaninline{g :: Dynamic -> t} & \haskellinline{g :: Dynamic -> t}\\ + \cleaninline{g (e :: t) = e0} & \haskellinline{g d = case fromDynamic d}\\ + \cleaninline{g e = e1} & \quad\haskellinline{Just e -> e0}\\ + & \quad\haskellinline{Nothing -> e1}\\ + + \bottomrule +\end{longtable} + diff --git a/dedication.tex b/dedication.tex index 54eae32..1009e4c 100644 --- a/dedication.tex +++ b/dedication.tex @@ -1,6 +1,6 @@ \topskip0pt \vspace*{\fill} \begin{centering} - Voor Andries + Voor Roos en Lotte \end{centering} \vspace*{\fill} diff --git a/domain_specific_languages.tex b/domain_specific_languages.tex index 5bd809b..c9ead65 100644 --- a/domain_specific_languages.tex +++ b/domain_specific_languages.tex @@ -1,8 +1,15 @@ -\chapter{Tagless final embedding} +\chapter{\Glsentrytext{DSL} techniques} +\input{domain_specific_languages/dsl_techniques.tex} + +\chapter{Tagless-final embedding} Dit kan ook een section zijn in de volgende chapter, maar toch lijkt het mij nuttig. -\chapter{Class based deep embedding} -Pearl +\chapter{Classy deep embedding}% +\label{chp:classy deep embedding} +TFP22/pearl + +\chapter{First-class datatypes} +TFP22 -\chapter{The \gls{MTASK} language} -RWDSL paper +\chapter{The \glsentrytext{MTASK} language} +RWDSL paper\todo{mogelijk naar part twee?} diff --git a/domain_specific_languages/dsl_techniques.tex b/domain_specific_languages/dsl_techniques.tex new file mode 100644 index 0000000..1573236 --- /dev/null +++ b/domain_specific_languages/dsl_techniques.tex @@ -0,0 +1,132 @@ +An \gls{EDSL} is a language embedded in a host language created for a specific domain\todo{citation needed?}. +\glspl{EDSL} can have one or more backends or views. +Commonly used views are pretty printing, compiling, simulating, verifying and proving the program. +Embedding techniques can be characterised by at least the following properties: +\begin{enumerate} + \item Extendibility of constructs + \item Extendibility of views + \item Type safety, the type of a term in the language is typed in the host language + \item Support for well typed variables + \item Intensional analyses + \item Support for partial views, not all views need to support all constructs +\end{enumerate} + +There are two main techniques for creating embedding \glspl{DSL}, deep---also called tagged---embedding and shallow---also called tagless---embedding. +In the following sections both techniques are explained. +As an example, a simple language with integers, booleans and some arithmetic operators is used as a running example. + +\section{Deep embedding} +A deep \gls{EDSL} is a language represented as data in the host language. +Views are functions that transform \emph{something} to the datatype or the other way around. +Definition~\ref{lst:exdeep} shows an implementation for the example \gls{DSL}. + +\begin{lstHaskell}[label={lst:exdeep},caption={A deeply embedded expression \gls{DSL}.}] +data Value = I Int | B Bool +data Expr + = Lit Value + | Plus Expr Expr + | Eq Expr Expr + deriving Show +\end{lstHaskell} + +Implementing a printer for the language is straightforward: + +\begin{lstHaskell}[caption={A printer for the deeply embedded expression \gls{DSL}.}] +print :: Expr -> String +print (Lit i) = show i +print (Plus l r) = "(" ++ print l ++ "+" ++ print r ++ ")" +print (Eq l r) = "(" ++ print l ++ "==" ++ print r ++ ")" +\end{lstHaskell} + +Adding a construct, for example subtraction reveals the Achilles' heel of deep embedding, namely that we need to revisit the original data type \emph{and} all the existing views. +I.e.\ we need to add \haskellinline{| Sub Expr Expr} to the \haskellinline{Expr} data type and \haskellinline{print (Sub l r) = ...} to the \haskellinline{print} view. +This limitation can be overcome by lifting the views to classes (See \cref{chp:classy deep embedding}). + +Implementing an evaluator for the language is possible without touching any original code, we just add a function operating on the \haskellinline{Expr} data type. +To store variables, it has an extra environment argument\todo{cite while}. +Here another downside of basic deep embedding arises immediately, the expressions are not typed, and therefore there has to be some type checking in the evaluation code. + +\begin{lstHaskell}[] +eval :: Expr -> Value +eval (Lit i) = i +eval (Plus l r) = case (eval l, eval r) of + (Lit (I l), Lit (I r)) -> I (l+r)) + (l, r) -> error $ "Cannot add " ++ show l ++ " to " ++ show r +eval (Eq l r) = case (eval l, eval r) of + (Lit (I l), Lit (I r)) -> B (l==r) + (Lit (B l), Lit (B r)) -> B (l==r) + (l, r) -> error $ "Cannot compare " ++ show l ++ " to " ++ show r +\end{lstHaskell} + +Luckily this problem can be overcome by switching from regular \glspl{ADT} to \glspl{GADT}, resulting in the following data type and evaluator. + +\begin{lstHaskell}[] +data Expr a where + Lit :: Show a => a -> Expr a + Plus :: Num a => Expr a -> Expr a -> Expr a + Eq :: Eq a => Expr a -> Expr a -> Expr Bool + +eval :: Expr a -> a +eval (Lit i) = i +eval (Plus l r) = eval l + eval r +eval (Eq l r) = eval l == eval r +\end{lstHaskell} + +Deep embedding has the advantage that it is easy to build and views are easy to add. +On the downside, the expressions created with this language are not necessarily type-safe. +In the given language it is possible to create an expression such as \cleaninline{Plus (LitI 4) (LitB True)} that adds a boolean to an integer. +Extending the \gls{ADT} is easy and convenient but extending the views accordingly is tedious since it has to be done individually for all views. + +The first downside of this type of \gls{EDSL} can be overcome by using \glspl{GADT}~\cite{cheney_first-class_2003}. +Example~\ref{lst:exdeepgadt} shows the same language, but type-safe with a \gls{GADT}. +\glspl{GADT} are not supported in the current version of \gls{CLEAN} and therefore the syntax is hypothetical. +However, it has been shown that \glspl{GADT} can be simulated using bimaps or projection pairs~\cite{cheney_first-class_2003}. +Unfortunately the lack of extendability remains a problem. +If a language construct is added, no compile time guarantee can be given that all views support it. + +\begin{lstClean}[label={lst:exdeepgadt},caption={A deeply embedded expression \gls{DSL} using \glspl{GADT}.}] +:: Expr a + = Lit a -> Expr a + | E.e: Var String -> Expr e + | Plus (Expr Int) (Expr Int) -> Expr Int + | E.e: Eq (Expr e) (Expr e) -> Expr Bool & == e +\end{lstClean} + +\subsection{Shallow embedding} +In a shallowly \gls{EDSL} all language constructs are expressed as functions in the host language. +An evaluator view for the example language then can be implemented as the code shown in Definition~\ref{lst:exshallow}. +Note that much of the internals of the language can be hidden using monads. + +\begin{lstClean}[label={lst:exshallow}, caption={A minimal shallow \gls{EDSL}.}] +:: Env :== (String -> Int) +:: DSL a :== (Env -> a) + +Lit :: a -> DSL a +Lit x = \e->x + +Var :: String -> DSL Int +Var i = \e->retrEnv e i + +Plus :: (DSL Int) (DSL Int) -> DSL Int +Plus x y = \e->x e + y e + +Eq :: (DSL a) (DSL a) -> DSL Bool | == a +Eq x y = \e->x e == y e +\end{lstClean} + +The advantage of shallowly embedding a language in a host language is its extendability. +It is very easy to add functionality because the compile time checks of the host language guarantee whether or not the functionality is available when used. +Moreover, the language is type safe as it is directly typed in the host language, i.e.\ \cleaninline{Lit True +. Lit 4} is rejected. + +The downside of this method is extending the language with views. +It is nearly impossible to add views to a shallowly embedded language. +The only way of achieving this is by reimplementing all functions so that they run all backends at the same time. +This will mean that every component will have to implement all views rendering it slow for multiple views and complex to implement. + +\subsection{\Acrlongpl{GADT}} + +\section{Shallow embedding} + +\subsection{Tagless-final embedding} + +\section{Comparison} diff --git a/glossaries.tex b/glossaries.tex index 20cec65..447a14c 100644 --- a/glossaries.tex +++ b/glossaries.tex @@ -1,8 +1,28 @@ % Acronyms -\newacronym{IOT}{IoT}{internet of things} -\newacronym{DSL}{DSL}{domain specific language} +\newacronym{ADT}{ADT}{algebraic data type} +\newacronym{DSL}{DSL}{domain-specific language} \newacronym{EDSL}{eDSL}{embedded \acrshort{DSL}} +\newacronym{GADT}{GADT}{generalised \acrshort{ADT}} +\newacronym{GHC}{GHC}{Glasgow Haskell Compiler} +\newacronym{GPL}{GPL}{general-purpose language} +\newacronym{FP}{FP}{functional programming} +\newacronym{GRS}{GRS}{graph rewriting system} +\newacronym{GUI}{GUI}{graphical \acrlong{UI}} +\newacronym{IOT}{IoT}{internet of things} +\newacronym{LEAN}{LEAN}{language of East-Anglia and Nijmegen} \newacronym{TOP}{TOP}{task-oriented programming} +\newacronym{TOSD}{TOSD}{task-oriented software development} +\newacronym{TRS}{TRS}{graph rewriting system} +\newacronym{RFID}{RFID}{radio-frequency identification} +\newacronym{SN}{SN}{sensor network} +\newacronym{BLE}{BLE}{Bluetooth low energy} +\newacronym{API}{API}{application programming interface} +\newacronym{OS}{OS}{operating system} +\newacronym{RTOS}{RTOS}{real-time \acrshort{OS}} +\newacronym{OTA}{OTA}{over-the-air} +\newacronym{MCU}{MCU}{microcontroller unit} +\newacronym{UI}{UI}{user interface} +\newacronym{SDS}{SDS}{shared data source} % Glossaries \newglossaryentry{MTASK}{% @@ -13,3 +33,15 @@ name=iTask, description={is a \acrshort{TOP} \acrshort{EDSL} for creating distributed multi-user collaborative web applications.}, } +\newglossaryentry{CLEAN}{% + name=Clean, + description={Clean \acrlong{LEAN}, a pure lazy functional programming language based on graph rewriting} +} +\newglossaryentry{HASKELL}{% + name=Haskell, + description={is a pure lazy functional programming language designed by a committe as a concept language} +} +\newglossaryentry{HASKELL98}{% + name=Haskell98, + description={is a standardised version of \gls{HASKELL}} +} diff --git a/introduction.tex b/introduction.tex index 0c025bc..38579cd 100644 --- a/introduction.tex +++ b/introduction.tex @@ -1,21 +1,177 @@ -\section{Background} -\subsection{\Acrlong{IOT}} -The \gls{IOT} is \ldots +The sheer number of connected devices around us is increasing exponentially. +First and foremost, these devices are driven by software. +This thesis is about \ldots +\todo[inline]{introduction} -\subsection{Functional programming} -Functional programming is \ldots +\section{\Acrlong{IOT}} +\todo[inline]{add more citations and rewrite to make modern} +The \gls{IOT} is growing rapidly and it is changing the way people and machines interact with the world. +The term \gls{IOT} was coined around 1999 to describe the communication of \gls{RFID} devices. +\gls{RFID} became more and more popular the years after but the term \gls{IOT} was not associated with it anymore. +Years later, during the rise of novel network technologies, the term \gls{IOT} resurged with a slightly different meaning. +Today, the \gls{IOT} is the term for a system of devices that sense the environment, act upon it and communicate with each other and the world. +At the time of writing, there is about one connected device per person in the world of which many are part of an \gls{IOT} system. +Gartner estimates that of these connected devices, there are about $5.8$ billion \gls{IOT} devices or endpoints connected~\footnote{Gartner (August 2019)}\todo[inline]{update with recent number}. +They are already in everyone's household in the form of smart electricity meters, smart fridges, smartphones, smart watches, home automation and in the form of much more. +While the number of devices seems to be growing exponentially fast, programming \gls{IOT} applications is difficult. +The devices are a large heterogeneous collection of different platforms, protocols and languages resulting in impedance problems. -\subsection{\Acrlong{TOP}} -\Gls{TOP} is \ldots +The devices in \gls{IOT} systems are equipped with various sensors and actuators. +These range from external ones such as positioning, temperature and humidity to more internal ones like heartbeat and respiration. +When describing \gls{IOT} systems, a layered architecture is often used to compartmentalize the technology. +For the intents and purposes of this paper the four layer architecture defined by ITU-T (International Telecommunications Union {-} Telecommunication Standardization Sector) will be used as visualized in Figure~\ref{fig:layers}. -\gls{ITASK} uses generic programming\index{generic programming} +\begin{figure} + \centering + \begin{tikzpicture}[node distance=3em] + \node (1) [rectangle,draw,minimum width=10em] {Application Layer}; + \node (2) [rectangle,draw,minimum width=10em,below of=1] {Support Laper}; + \node (3) [rectangle,draw,minimum width=10em,below of=2] {Network Layer}; + \node (4) [rectangle,draw,minimum width=10em,below of=3] {Perception Layer}; -\subsection{\Acrlongpl{DSL}} -\Glspl{DSL} are \ldots + \draw [->] (1) -- (2); + \draw [->] (2) -- (1); + \draw [->] (2) -- (3); + \draw [->] (3) -- (2); + \draw [->] (3) -- (4); + \draw [->] (4) -- (3); + \end{tikzpicture} + \caption{The four layered \gls{IOT} architecture as described by the ITU-T.}% + \label{fig:layers} +\end{figure} + +The first layer is called the perception layer and contains the actual endpoints with their peripherals. +For example in home automation, the sensors reading the room and the actuators opening the curtains are in the perception layer. +As a special type of device, it may also contain a \gls{SN}. +A \gls{SN} is a collection of sensors connected by a mesh network or central hub. +The network layer is the second layer and it consists of the hardware and software to connect the perception layer to the world. +In home automation, this layer may consist of a specialized \gls{IOT} technology such as \gls{BLE} or ZigBee but it may also use existing technologies such as WiFi or wired connections. +The third layer is named support layer and is responsible for the servicing and business rules surrounding the application. +One of its goals is to provide the \gls{API}, interfaces and data storage. +In home automation this provides the server storing the data. +The fourth and final layer in this architecture is the application layer. +The application layer provides the interaction between the user and the \gls{IOT} system. +In home automation, this layer contains the apps for to read the measurements and control the devices. + +The perception layer often is a heterogeneous collections of microcontrollers, each having their own peculiarities, language of choice and hardware interfaces. +The hardware needs to be cheap, small-scale and energy efficient. +As a result, the \glspl{MCU} used to power these devices do not have a lot of computational power, a soup\c{c}on of memory, and little communication bandwidth. +Typically the devices do not run a full fledged \gls{OS} but a compiled firmware. +This firmware is often written in an imperative language that needs to be flashed to the program memory. +It is possible to dynamically send the program to the program memory using \gls{OTA} programming~\cite{baccelli_scripting_2018,baccelli_reprogramming_2018}. +Program memory typically is flash based and only lasts a couple of thousand writes before it wears out. +While devices are getting a bit faster, smaller, and cheaper, they keep these properties to an extent. +The properties of the device greatly reduce the flexibility for dynamic systems where tasks are created on the fly, executed on demand and require parallel execution. +These problems can be mitigated by dynamically sending code to be interpreted to the \gls{MCU}. +With interpretation, a specialized interpreter is flashed in the program memory once that receives the program code to execute at runtime. + +\section{\Acrlongpl{DSL}} +% General +Programming languages can be divided up into two categories: \glspl{DSL} and \glspl{GPL}\todo{citation needed}. +Where \glspl{GPL} are not made with a demarcated area in mind, \glspl{DSL} are tailor-made for a specific domain. +Consequently, writing idiomatic domain-specific code is easy but this may come at the cost of the \gls{DSL} being less expressive to an extent that it may not even be Turing complete. +\Glspl{DSL} come in two main flavours: standalone and embedded\footnote{Also called external and internal respectively~\cite{fowler_domain-specific_2010}} of which \glspl{EDSL} can again be classified into heterogeneous and homogeneous languages (see \cref{fig:taxonomy_of_dsls} for this taxonomy). + +\begin{figure}[ht] + \centering + \begin{tikzpicture}[nodes={draw,minimum width=7.5em}] + \node (dsl) {\gls{DSL}}; + \node (sta) [below=of dsl,xshift=-3.75em] {standalone}; + \node (emb) [right=of sta] {embedded}; + \node (het) [below=of emb,xshift=-3.75em] {heterogeneous}; + \node (hom) [right=of het] {homogeneous}; + \draw [->] (dsl) -- (sta); + \draw [->] (dsl) -- (emb); + \draw [->] (emb) -- (het); + \draw [->] (emb) -- (hom); + \end{tikzpicture} + \caption{Taxonomy of \glspl{DSL} (adapted from Verna~\cite[pg.\ 2]{mernik_extensible_2013})}% + \label{fig:taxonomy_of_dsls} +\end{figure} + +DSLs where historically created as standalone languages which means all the machinery is developed solely for the language. +The advantage of this approach is that the language designer is free to define the syntax and type system of the language as they wish, not being restricted by any constraint. +Unfortunately it also means that they need to develop a compiler or interpreter for the language to be usable making standalone \glspl{DSL} costly to create. +Examples of standalone \glspl{DSL} are regular expressions, make, yacc, XML, SQL, \etc. + +A radically different approach is embeddding the \gls{DSL} in a host language, i.e.\ \glspl{EDSL}~\cite{hudak_modular_1998}. +By defining the language as constructs in the host language, much of the machinery is inherited and the cost of creating embedded languages is very low. +There are however two sides to the this coin. +If the syntax of the host language is not very flexible, the syntax of the \gls{DSL} may become clumsy. +Furthermore, errors shown to the programmer may be larded with host language errors, making it difficult for a non-expert of the host language to work with the \gls{DSL}. + +Tratt applied a notion from metaprogramming~\cite{sheard_accomplishments_2001} to \glspl{EDSL} to define homogeneity and heterogeneity of \glspl{EDSL} as follows~\cite{tratt_domain_2008}: +\begin{quote} + a homogeneous system is one where all the components are specifically designed to work with each other, whereas in heterogeneous systems at least one of the components is largely, or completely, ignorant of the existence of the other parts of the system. +\end{quote} +Homogeneous \glspl{EDSL} are therefore languages that are solely defined as an extension to their host language. +They often restrict features of the host language to provide a safer interface or capture an idiomatic pattern in the host language for reuse. +The difference between a library and a homogeneous \glspl{EDSL} is not always clear. +Examples of homogeneous \glspl{EDSL} are libraries such as ones for \glspl{GUI} creation, LISP's macro system, \etc. + +On the other hand, heterogeneous \glspl{EDSL} are languages that are not executed in the host language. +For example, Elliott et al.\ describe the language Pan, for which the final representation in the host language is a compiler that will, when executed, generate code for a completely different target platform~\cite{elliott_compiling_2003}. +In fact, \gls{ITASK} and \gls{MTASK} are both heterogeneous \glspl{EDSL}. + +\section{\Acrlong{FP}}\label{ssec:functional programming} +\Gls{FP} is \ldots +\Gls{FP} languages are naturally suitable as a host language for \gls{DSL} embedding because of their rich type systems and minimal and extensible syntax~\cite{gibbons_functional_2015}. + +\section{\Acrlong{TOP}} +\Gls{TOP} is a declarative programming paradigm designed to model interactive systems~\cite{plasmeijer_task-oriented_2012}. +Instead of dividing problems up into a layered approach it deals with separation of concerns in a novel way (see \cref{fig:tosd}). +All components of a \gls{TOP} program are centered around the data types and from these datatypes, implementation details such as the interface, the communication and the sharing of data is generated. +\begin{description} + \item[Data types] + In \gls{TOP}, everything is based around datatypes. + \item[Tasks] + A task is an abstract representation of a piece of work that needs to be done. + It provides an intuitive abstraction over work in the real world. + Just as with real-life tasks and workflow, tasks can be combined in various ways such as in parallel or in sequence. + Furthermore, tasks are observable which means it is possible to observe a --- partial --- result during execution and act upon it by for example starting new tasks. + Examples of tasks are filling in a form, sending an email, reading a sensor or even doing a physical task. + \item[UI] + The \gls{UI} of the system is automatically generated from the representation of the type. + For example, in \gls{FP} languages this may be done using generic programming or template metaprogramming whereas in imperative programming languages they may be done using introspection\todo{Do I want this sentence here?}. + In many practical \gls{TOP} systems the \gls{UI} can be tweaked afterwards to suit the needs of the application. + \item[SDS] + Tasks can communicate using task values but this imposes a problem in many collaboration patterns where tasks that are not necessarily related need to share data. + Tasks can also share data using \glspl{SDS}. + \Glspl{SDS} are an abstraction over any data. + An \gls{SDS} can represent typed data stored in a file, a chunk of memory, a database \etc. + \Glspl{SDS} can also represent external impure data such as the time, random numbers or sensory data. + Similar to tasks, transformation and combination of \glspl{SDS} is possible. + \item[PL] + \gls{TOP} languages are usually embedded in \gls{FP} languages but not necessarily. + The languages in which the \gls{TOP} is hosted provides the integration with the execution platform if there is any. + Some host languages also provide the implementations for the tasks and \glspl{SDS}. +\end{description} + +\begin{figure}[ht] + \centering + \begin{tikzpicture} + \pie[% + color={red,violet,teal,blue}, + explode={0.1}, + hide number, + text=inside, + rotate=45, + radius=2.25, + ]{% + 25/\textcolor{white}{UI}, + 25/\textcolor{white}{Tasks}, + 25/\textcolor{white}{PL}, + 25/\textcolor{white}{SDS} + } + \node [draw,fill=yellow,circle]{Types}; + \end{tikzpicture} + \caption{\Gls{TOSD} approach (adapted from Stutterheim et al.~\cite[pg.\ 20]{wang_maintaining_2018})}% + \label{fig:tosd} +\end{figure} \section{Thesis Outline} -\todo{reference correct chapters} +\todo[inline]{reference correct chapters} Chapters 0 and 0 are based on the paper \emph{A Task-Based \acrshort{DSL} for Microcomputers}~\cite{koopman_task-based_2018}. Chapters 0 and 0 are based on the Master's thesis and paper \emph{\glst{TOP} and the \glst{IOT}}~\cite{lubbers_task_2017,lubbers_task_2018}. diff --git a/lst/Clean System Files/expr_gadt.abc b/lst/Clean System Files/expr_gadt.abc new file mode 100644 index 0000000..81dc7a1 --- /dev/null +++ b/lst/Clean System Files/expr_gadt.abc @@ -0,0 +1,254 @@ +.comp 920 010111010010000 +.start __expr_gadt_Start +.depend "_SystemEnumStrict" "20220216025412" +.depend "_SystemStrictLists" "20220216025412" +.depend "StdStrictLists" "20220216025412" +.depend "_SystemEnum" "20220216025412" +.depend "StdEnum" "20220216025412" +.depend "StdMisc" "20220216025412" +.depend "StdFunctions" "20220216025412" +.depend "StdCharList" "20220216025412" +.depend "StdTuple" "20220216025412" +.depend "StdOrdList" "20220216025412" +.depend "StdList" "20220216025412" +.depend "StdClass" "20220216025412" +.depend "StdFile" "20220216025412" +.depend "StdString" "20220216025412" +.depend "_SystemArray" "20220216025412" +.depend "StdArray" "20220216025412" +.depend "StdChar" "20220216025412" +.depend "StdReal" "20220216025412" +.depend "StdInt" "20220216025412" +.depend "StdOverloaded" "20220216025412" +.depend "StdBool" "20220216025412" +.depend "StdEnv" "20220216025412" +.module m_expr_gadt "expr_gadt" "20220301194916" +.endinfo +.impmod _system +.implab _cycle_in_spine +.implab _type_error +.implab _hnf +.impdesc e_system_dind +.implab e_system_nind e_system_eaind +.impdesc e_system_dif +.implab e_system_nif e_system_eaif +.implab e_system_sif +.impdesc e_system_dAP +.implab e_system_nAP e_system_eaAP +.implab e_system_sAP +.impdesc ARRAY +.impdesc _Nil +.impdesc _Cons +.impdesc _Conss +.implab n_Conss ea_Conss +.impdesc _Consts +.implab n_Consts ea_Consts +.impdesc _Conssts +.implab n_Conssts ea_Conssts +.impdesc _Tuple +.impdesc d_S.1 +.implab n_S.1 ea_S.1 +.impdesc d_S.2 +.implab n_S.2 ea_S.2 +.impdesc d_S.3 +.implab n_S.3 ea_S.3 +.impdesc d_S.4 +.implab n_S.4 ea_S.4 +.impdesc d_S.5 +.implab n_S.5 ea_S.5 +.impdesc d_S.6 +.implab n_S.6 ea_S.6 +.implab _driver +.impmod StdFunctions +.impdesc e_StdFunctions_did +.impmod StdString +.impdesc e_StdString_dtoString;5 +.impmod StdOverloaded +.impdesc e_StdOverloaded_d+;.+ +.implab e_StdOverloaded_n+;.+ e_StdOverloaded_ea+;.+ +.impdesc e_StdOverloaded_d==;.== +.implab e_StdOverloaded_n==;.== e_StdOverloaded_ea==;.== +.impdesc e_StdOverloaded_rtoString; +.record r7 aaaa 4 0 "BM" +.record k13 d{a}aa 3 0 e_StdOverloaded_rtoString; "Lit" +.impdesc e_StdOverloaded_r+; +.record k14 d{a}aaa 4 0 e_StdOverloaded_r+; "Add" +.impdesc e_StdOverloaded_r==; +.record k15 d{a}aaa 4 0 e_StdOverloaded_r==; "Eq" +.export __expr_gadt_Start +.o 0 0 +__expr_gadt_Start + build _ 0 n4 +.d 1 0 + jmp _driver +.n 0 _ +.o 1 0 +n4 + push_node _cycle_in_spine 0 +.d 0 0 + jsr ea4 +.o 0 1 i + fillI_b 0 0 + pop_b 1 +.d 1 0 + rtn +.o 0 0 +ea4 +.o 0 0 +s4 + buildh e_StdString_dtoString;5 0 + create + buildI 42 + push_a 2 + update_a 2 3 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 3 0 + jsr s2 +.o 1 0 +.d 1 0 + jsr s3 +.o 1 0 + pushI_a 0 + pop_a 1 +.d 0 1 i + rtn +.o 3 0 +s2 + build _ 0 n1 + push_a 2 + push_a 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 + fill_r k13 3 0 5 0 0 + pop_a 5 +.d 1 0 + rtn +.n 0 _ +.o 1 0 +n1 + push_node _cycle_in_spine 0 +.o 0 0 +ea1 + buildh e_StdFunctions_did 0 + buildh e_StdFunctions_did 0 + buildh e_StdFunctions_did 0 + buildh e_StdFunctions_did 0 + fill_r r7 4 0 4 0 0 + pop_a 4 +.d 1 0 + rtn +.n 1 _ _ +.o 1 0 +n3 + push_node _cycle_in_spine 1 +.d 1 0 + jsr ea3 +.o 1 0 + fill_a 0 1 + pop_a 1 +.d 1 0 + rtn +.o 1 0 +ea3 + jsr_eval 0 +.o 1 0 +s3 + pushD_a 0 + jmpD ea k14 0 case.2 case.3 +case.1 + pop_b 1 + repl_args 3 3 + pop_a 1 + jsr_eval 0 + push_r_args_a 0 4 0 2 1 + jsr_eval 0 + push_a 2 + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 + update_a 1 3 + updatepop_a 0 2 + jmp_ap 1 +case.2 + pop_b 1 + repl_args 4 4 + push_a 3 + build _ 1 n3 + push_a 3 + build _ 1 n3 + push_a 2 + build _ 3 n16 + jsr_eval 2 + push_r_args_a 2 4 0 2 1 + jsr_eval 0 + update_a 1 5 + updatepop_a 0 4 + jmp_ap 1 +case.3 + pop_b 1 + repl_args 4 4 + push_a 3 + build _ 1 n3 + push_a 3 + build _ 1 n3 + push_a 2 + build _ 3 n17 + jsr_eval 2 + push_r_args_a 2 4 0 2 1 + jsr_eval 0 + update_a 1 5 + updatepop_a 0 4 + jmp_ap 1 +.n 3 _ ea17 +.o 1 0 +n17 + push_node _cycle_in_spine 3 +.o 4 0 +ea17 +.o 4 0 +s17 + push_a 2 + jsr_eval 0 + push_a 2 + jsr_eval 0 + push_a 2 + jsr_eval 0 + update_a 2 5 + update_a 1 4 + updatepop_a 0 3 +.d 3 0 + jsr_i 2 +.o 0 1 b + fillB_b 0 0 + pop_b 1 +.d 1 0 + rtn +.n 3 _ ea16 +.o 1 0 +n16 + push_node _cycle_in_spine 3 +.o 4 0 +ea16 +.o 4 0 +s16 + push_a 2 + jsr_eval 0 + push_a 2 + jsr_eval 0 + push_a 2 + jsr_eval 0 + update_a 2 5 + update_a 1 4 + updatepop_a 0 3 +.d 3 0 + jsr_i 2 +.o 1 0 + fill_a 0 1 + pop_a 1 +.d 1 0 + rtn diff --git a/lst/Clean System Files/expr_gadt.o b/lst/Clean System Files/expr_gadt.o new file mode 100644 index 0000000000000000000000000000000000000000..09dfb1fb6ff0ce5e671630230785496d9013b897 GIT binary patch literal 9809 zcmds6Z-`u16@R-g)lIC~Nm`q=YFSLHF_Cm<|HQOK*-4x3n`D!0laLxLyd8I@&D6lX79Pbdw%Dhd+xvYUcR<>^6uWAo`9t%_*~GgF&YHpZPn=G!I0O|GF*d- zzCw@P__Z1w?CorHWBUL#1AAYmSunj(10Qqnbx!?ys{8n74S$DY@ABc_$3JiQd%EyH zA@JWZ{LwD_TLu12{hEmJ+2Y2(n;L!b4;%hnHkovnpA-0}4gWwF{yu?!!SKy8NWHlI z9})Pk8U9NcoFy**K5Fxg|FKP)G-Pq1y8IGhKK?HZ|Aj96S%Lr1W=-tY|GdEevEjec zrT+zifATs_+|Y%8PT)VZM*jB&{x{ahe@fsdYvey8@V{&LAEI_!-1&c=8ZrOw8TJ#y z&)8(rUH;Dn{)>kH(JuU!z`tzxgI)NS1pd+*`M($V1LolA*8iV~@8*P{V7K8%sF3WW zAFcwn9RNsjg?@}F!2J2ThmSd8TjsxKVK)Dw;V&8x{e$cBucgUn%;taIEF3%jYdriL z1^$zUKV+Puf82507stO%;9oL)JO1~3_`3xD^bNXWJN`Zo|1N=l-tg`C*L(Pf1^#8j zzpTSh^N+L09sjhze|C!|PFs9DE4cisz|WWjbDoiZ+(j<`tia!9h||P@fd4`Ix%@{3 z{v(EO=MPt!%m1Okf5F4gc=%5X{I@)OTxo9qKNa``A0}fGJAPbAF8`vyj|_hrPDqeH z97!(!b%B50(?7O^%YRegUp9Pu{bNbG{J#tQ!5hh##O7m3y8IqG)EH9)^XG(zk11hW zGd)2+@o_G?@~q*HW7Cq{NdK6uubjY?RJ4 zcAgw!CCkb%D=Fn%5GL}V

mo%+tE&a2vWT}T@p;1tg zYK6RMg`8=Hd})PT)k>8@du&#XXjYB5R*f83wN5V-l+{LoSv3mIs!644kku z!d7IBpq10D+UI~8P1Je`mdkG}E-pgB_^m`Fc^Y(@jAKht@~Nn~JxaySIpy-!nP95_WXST_BYdy#k_thdu#%>zsVTD z9y8_!*|(yJlRY07-aE?Ef|mD;)E~xE&8}1;*`o z?Ds+B1cG?*oXUCO61W{de6pagJ;!v-?ibJNzJ9ZWFPU+f*F@E?jq`U?^lRgsAK-XJ z=J-ZPhq(5bI|%UoO4EPLQGz*SDd{&_yO8r=1d_iu=c@3U~k z&i?Iug2TdjK);jp<8euO{xlP*wEa9|a9~&i@CUK`^~X6!{I)&sYv8cw^+c)?@c3*5fS4h` zu|{~E0E4V%kG;?5AoF0)XBzk{tNFqH^7*-)$yT|VAG{y?{M=#jS5w1uwRT#C>FRZH z&Yp|&>EYr$+b*u&Y&t=zh3W3-Yzoau)rrEMPpQt9uw#d|+d}n4s$FL-R9~97)-FSJ zQ@87^h3dxSTDuGbUX5)GS{UGFSt+49QGK|*V%zQEiq)#yLUjYS?N|%dNzS!)83yKK zUmH?dn69RF1I`@ZsNlhe;|%oSTLpZ(fDZ}yn1Evs`ufcY_&xzYD&Y8kFQ5OCfS(cY zZwfeG`F;MsC*VI4@aF~mR|5WP0sozV|53pIEZ~0;@OK4#JzZ43Jlrhc;{tx4fX@r~ z4+Q*Y0{#a9UlQ;PT~NMpZ5Qy{1$@7Ne?h>%B;a2W@TP!&N5G#D@TUd*IRSrBz+V>d z-w62Y0{(`8za!xP5b*Z|ypJB9eDiyqfPX~5w+i?U0Ur_YI|Ter!Z&;F{rv*2za{Ih zyTQzCrBa${#6v;u@ZsF?AdU}~EA;oy*=jx5dtmD5@nFxPLz6-N;8BCtP1#_juC$|b zrz$0CD%Q%UOEpqv=4UFUI4)P?xPGc!Eu~#$Q*AiaMglUe&(|BJljNdYEq2!L@2KXc zf?^yWiKnur95&^MDMw8?X3AZlA88cto~zC@$}}?cp}HXONTXJ+K0rug)~NY0V}FQ7 zQkg9jOVnL4&c*q7D$aS@s;jh>3ad00W3iJjV=|7>Z35Fa?F&wXm!^cg<6BkI98vd L)b}W?F`)kfE!gY} literal 0 HcmV?d00001 diff --git a/lst/Clean System Files/generic_eq.abc b/lst/Clean System Files/generic_eq.abc new file mode 100644 index 0000000..ddb199e --- /dev/null +++ b/lst/Clean System Files/generic_eq.abc @@ -0,0 +1,891 @@ +.comp 920 010111010010000 +.start __generic_eq_Start +.depend "StdGeneric" "20220216025412" +.depend "_SystemEnumStrict" "20220216025412" +.depend "_SystemStrictLists" "20220216025412" +.depend "StdStrictLists" "20220216025412" +.depend "_SystemEnum" "20220216025412" +.depend "StdEnum" "20220216025412" +.depend "StdMisc" "20220216025412" +.depend "StdFunctions" "20220216025412" +.depend "StdCharList" "20220216025412" +.depend "StdTuple" "20220216025412" +.depend "StdOrdList" "20220216025412" +.depend "StdList" "20220216025412" +.depend "StdClass" "20220216025412" +.depend "StdFile" "20220216025412" +.depend "StdString" "20220216025412" +.depend "_SystemArray" "20220216025412" +.depend "StdArray" "20220216025412" +.depend "StdChar" "20220216025412" +.depend "StdReal" "20220216025412" +.depend "StdInt" "20220216025412" +.depend "StdOverloaded" "20220216025412" +.depend "StdBool" "20220216025412" +.depend "StdEnv" "20220216025412" +.module m_generic_eq "generic_eq" "20220301120355" +.endinfo +.impmod _system +.implab _cycle_in_spine +.implab _type_error +.implab _hnf +.impdesc e_system_dind +.implab e_system_nind e_system_eaind +.impdesc e_system_dif +.implab e_system_nif e_system_eaif +.implab e_system_sif +.impdesc e_system_dAP +.implab e_system_nAP e_system_eaAP +.implab e_system_sAP +.impdesc ARRAY +.impdesc _Nil +.impdesc _Cons +.impdesc _Conss +.implab n_Conss ea_Conss +.impdesc _Consts +.implab n_Consts ea_Consts +.impdesc _Conssts +.implab n_Conssts ea_Conssts +.impdesc _Tuple +.impdesc d_S.1 +.implab n_S.1 ea_S.1 +.impdesc d_S.2 +.implab n_S.2 ea_S.2 +.impdesc d_S.3 +.implab n_S.3 ea_S.3 +.impdesc d_S.4 +.implab n_S.4 ea_S.4 +.impdesc d_S.5 +.implab n_S.5 ea_S.5 +.impdesc d_S.6 +.implab n_S.6 ea_S.6 +.implab _driver +.impmod StdChar +.implab e_StdChar_s==;18 +.impmod StdInt +.implab e_StdInt_s==;16 +.impdesc e_StdInt_d<;17 +.impmod StdBool +.implab e_StdBool_s==;3 +.impmod StdGeneric +.impdesc e_StdGeneric_dUNIT +.impdesc e_StdGeneric_dLEFT +.impdesc e_StdGeneric_dRIGHT +.impdesc e_StdGeneric_dPAIR +.impdesc e_StdGeneric_dCONS +.desc d21 _hnf _add_arg 2 0 "C1" +.desc d22 _hnf _hnf 0 0 "C2" +.export __generic_eq_Start +.o 0 0 +__generic_eq_Start + build _ 0 n1 +.d 1 0 + jmp _driver +.n 0 _ +.o 1 0 +n1 + push_node _cycle_in_spine 0 +.o 0 0 +ea1 + buildh _Nil 0 + buildI 4 + buildh _Cons 2 + buildI 3 + buildh _Cons 2 + buildI 2 + buildh _Cons 2 + buildh _Nil 0 + buildI 3 + buildh _Cons 2 + buildI 2 + buildh _Cons 2 + buildI 1 + buildh _Cons 2 + buildh e_StdInt_d<;17 0 + build d10 3 n10 + buildB TRUE + buildh _Just 1 + buildh _Nil 0 + buildh _Tuple 2 + buildI 42 + buildh d21 2 + buildh d22 0 + build _ 2 n11 + push_a 1 + push_a 1 + fillh _Tuple 2 4 + pop_a 2 +.d 1 0 + rtn +.n 2 _ +.o 1 0 +n11 + push_node _cycle_in_spine 2 +.d 2 0 + jsr ea11 +.o 0 1 b + fillB_b 0 0 + pop_b 1 +.d 1 0 + rtn +.o 2 0 +ea11 +.o 2 0 +s11 + push_a 1 + build _ 1 n15 + push_a 1 + build _ 1 n15 + buildh d47 0 + update_a 2 4 + update_a 1 3 + updatepop_a 0 2 +.d 3 0 + jmp s6 +.desc d47 _hnf l47 2 0 "_f6" +.a 2 ea47 +.o 2 0 +l47 + push_args 0 1 1 + update_a 2 1 + create + update_a 0 3 + pop_a 1 +.o 3 0 +ea47 +.o 3 0 +s47 + push_a 0 + jsr_eval 0 + buildh d41 0 + buildh d46 0 + push_a 4 + push_a 3 + update_a 1 4 + update_a 2 1 + update_a 3 2 + update_a 0 3 + pop_a 1 + update_a 3 5 + update_a 2 4 + update_a 1 3 + updatepop_a 0 2 +.d 4 0 + jsr s9 +.o 0 1 b + fillB_b 0 0 + pop_b 1 +.d 1 0 + rtn +.desc d46 _hnf l46 2 0 "_f5" +.a 2 ea46 +.o 2 0 +l46 + push_args 0 1 1 + update_a 2 1 + create + update_a 0 3 + pop_a 1 +.o 3 0 +ea46 +.o 3 0 +s46 + push_a 1 + jsr_eval 0 + push_a 1 + jsr_eval 0 + buildh d45 0 + update_a 2 4 + update_a 1 3 + updatepop_a 0 2 +.d 3 0 + jsr s7 +.o 0 1 b + fillB_b 0 0 + pop_b 1 +.d 1 0 + rtn +.desc d45 _hnf l45 2 0 "_f4" +.a 2 ea45 +.o 2 0 +l45 + push_args 0 1 1 + update_a 2 1 + create + update_a 0 3 + pop_a 1 +.o 3 0 +ea45 +.o 3 0 +s45 + push_a 1 + jsr_eval 0 + push_a 1 + jsr_eval 0 + buildh d44 0 + buildh d2 0 + update_a 3 5 + update_a 2 4 + update_a 1 3 + updatepop_a 0 2 +.d 4 0 + jsr s8 +.o 0 1 b + fillB_b 0 0 + pop_b 1 +.d 1 0 + rtn +.desc d44 _hnf l44 2 0 "_f3" +.a 2 ea44 +.o 2 0 +l44 + push_args 0 1 1 + update_a 2 1 + create + update_a 0 3 + pop_a 1 +.o 3 0 +ea44 +.o 3 0 +s44 + push_a 1 + jsr_eval 0 + repl_args 2 2 + push_a 2 + jsr_eval 0 + repl_args 2 2 + buildh d43 0 + buildh d42 0 + update_a 5 7 + update_a 4 6 + update_a 3 5 + update_a 2 4 + update_a 1 3 + updatepop_a 0 2 +.d 6 0 + jsr s12 +.o 0 1 b + fillB_b 0 0 + pop_b 1 +.d 1 0 + rtn +.desc d43 _hnf l43 2 0 "_f2" +.a 2 ea43 +.o 2 0 +l43 + push_args 0 1 1 + update_a 2 1 + create + update_a 0 3 + pop_a 1 +.o 3 0 +ea43 +.o 3 0 +s43 + push_a 0 + jsr_eval 0 + buildh d3 0 + push_a 3 + push_a 2 + update_a 1 3 + update_a 2 1 + update_a 0 2 + pop_a 1 + update_a 2 4 + update_a 1 3 + updatepop_a 0 2 +.d 3 0 + jsr s13 +.o 0 1 b + fillB_b 0 0 + pop_b 1 +.d 1 0 + rtn +.desc d42 _hnf l42 2 0 "_f1" +.a 2 ea42 +.o 2 0 +l42 + push_args 0 1 1 + update_a 2 1 + create + update_a 0 3 + pop_a 1 +.o 3 0 +ea42 +.o 3 0 +s42 + push_a 0 + jsr_eval 0 + buildh d4 0 + push_a 3 + push_a 2 + update_a 1 3 + update_a 2 1 + update_a 0 2 + pop_a 1 + update_a 2 4 + update_a 1 3 + updatepop_a 0 2 +.d 3 0 + jsr s10 +.o 0 1 b + fillB_b 0 0 + pop_b 1 +.d 1 0 + rtn +.desc d2 _hnf l2 2 0 "gEq_Int;1" +.o 3 0 +i2 + pop_a 1 + jsr_eval 1 + pushI_a 1 + jsr_eval 0 + pushI_a 0 + pop_a 2 +.d 0 2 ii + jmp s2 +.ai 0 a2 i2 +.o 2 0 +l2 + repl_args 1 1 +.o 2 0 +a2 +.d 2 0 + jsr ea2 +.o 0 1 b + buildB_b 0 + pop_b 1 +.d 1 0 + rtn +.o 2 0 +ea2 + jsr_eval 1 + jsr_eval 0 + pushI_a 1 + pushI_a 0 + pop_a 2 +.o 0 2 ii +s2 + push_b 1 + push_b 1 + update_b 1 3 + updatepop_b 0 2 + eqI +.d 0 1 b + rtn +.desc d4 _hnf l4 2 0 "gEq_Char;4" +.o 3 0 +i4 + pop_a 1 + jsr_eval 1 + pushC_a 1 + jsr_eval 0 + pushC_a 0 + pop_a 2 +.d 0 2 cc + jmp s4 +.ai 0 a4 i4 +.o 2 0 +l4 + repl_args 1 1 +.o 2 0 +a4 +.d 2 0 + jsr ea4 +.o 0 1 b + buildB_b 0 + pop_b 1 +.d 1 0 + rtn +.o 2 0 +ea4 + jsr_eval 1 + jsr_eval 0 + pushC_a 1 + pushC_a 0 + pop_a 2 +.o 0 2 cc +s4 + push_b 1 + push_b 1 + update_b 1 3 + updatepop_b 0 2 + eqC +.d 0 1 b + rtn +.desc d3 _hnf l3 2 0 "gEq_Bool;2" +.o 3 0 +i3 + pop_a 1 + jsr_eval 1 + pushB_a 1 + jsr_eval 0 + pushB_a 0 + pop_a 2 +.d 0 2 bb + jmp s3 +.ai 0 a3 i3 +.o 2 0 +l3 + repl_args 1 1 +.o 2 0 +a3 +.d 2 0 + jsr ea3 +.o 0 1 b + buildB_b 0 + pop_b 1 +.d 1 0 + rtn +.o 2 0 +ea3 + jsr_eval 1 + jsr_eval 0 + pushB_a 1 + pushB_a 0 + pop_a 2 +.o 0 2 bb +s3 + push_b 1 + push_b 1 + update_b 1 3 + updatepop_b 0 2 + eqB +.d 0 1 b + rtn +.o 3 0 +s13 + push_a 2 + build _ 1 n17 + push_a 2 + build _ 1 n17 + buildh d41 0 + push_a 3 + buildh d7 1 + buildh d9 2 + update_a 2 5 + update_a 1 4 + updatepop_a 0 3 +.d 3 0 + jmp s6 +.n 1 _ ea17 +.o 1 0 +n17 + push_node _cycle_in_spine 1 +.o 2 0 +ea17 + jsr_eval 0 +.o 2 0 +s17 + eq_desc _Just 1 0 + jmp_true case.1 + jmp case.2 +case.1 + repl_args 1 1 + push_a 0 + buildh e_StdGeneric_dCONS 1 + fillh e_StdGeneric_dLEFT 1 2 + pop_a 1 +.d 1 0 + rtn +case.2 + buildh e_StdGeneric_dUNIT 0 + buildh e_StdGeneric_dCONS 1 + fillh e_StdGeneric_dRIGHT 1 2 + pop_a 1 +.d 1 0 + rtn +.o 6 0 +s12 + push_a 5 + push_a 5 + buildh _Tuple 2 + build _ 1 n16 + push_a 4 + push_a 4 + buildh _Tuple 2 + build _ 1 n16 + push_a 3 + push_a 3 + buildh d8 2 + buildh d7 1 + update_a 2 8 + update_a 1 7 + updatepop_a 0 6 +.d 3 0 + jmp s6 +.n 1 _ ea16 +.o 1 0 +n16 + push_node _cycle_in_spine 1 +.o 2 0 +ea16 + jsr_eval 0 + repl_args 2 2 +.o 3 0 +s16 + push_a 1 + push_a 1 + buildh e_StdGeneric_dPAIR 2 + fillh e_StdGeneric_dCONS 1 3 + pop_a 2 +.d 1 0 + rtn +.n 1 _ ea15 +.o 1 0 +n15 + push_node _cycle_in_spine 1 +.o 2 0 +ea15 + jsr_eval 0 +.o 2 0 +s15 + eq_desc d21 2 0 + jmp_true case.3 + jmp case.4 +case.3 + repl_args 2 2 + push_a 1 + push_a 1 + buildh e_StdGeneric_dPAIR 2 + buildh e_StdGeneric_dCONS 1 + fillh e_StdGeneric_dLEFT 1 3 + pop_a 2 +.d 1 0 + rtn +case.4 + buildh e_StdGeneric_dUNIT 0 + buildh e_StdGeneric_dCONS 1 + fillh e_StdGeneric_dRIGHT 1 2 + pop_a 1 +.d 1 0 + rtn +.desc d10 n10 l10 3 0 "gEq__List;12" +.o 4 0 +i10 + pop_a 1 + jsr_eval 1 +.d 3 0 + jmp s10 +.ai 0 a10 i10 +.o 2 0 +l10 + repl_args 2 2 +.o 3 0 +a10 +.d 3 0 + jsr ea10 +.o 0 1 b + buildB_b 0 + pop_b 1 +.d 1 0 + rtn +.n 3 d10 +.o 1 0 +n10 + push_node _cycle_in_spine 3 +.d 3 0 + jsr ea10 +.o 0 1 b + fillB_b 0 0 + pop_b 1 +.d 1 0 + rtn +.o 3 0 +ea10 + jsr_eval 1 +.o 3 0 +s10 + push_a 2 + build _ 1 n14 + push_a 2 + build _ 1 n14 + buildh d41 0 + push_a 3 + buildh d10 1 + push_a 4 + buildh d8 2 + buildh d7 1 + buildh d9 2 + update_a 2 5 + update_a 1 4 + updatepop_a 0 3 +.d 3 0 + jmp s6 +.desc d41 _hnf l41 2 0 "_f0" +.a 2 ea41 +.o 2 0 +l41 + push_args 0 1 1 + update_a 2 1 + create + update_a 0 3 + pop_a 1 +.o 3 0 +ea41 +.o 3 0 +s41 + push_a 1 + jsr_eval 0 + push_a 1 + jsr_eval 0 + buildh d5 0 + update_a 2 4 + update_a 1 3 + updatepop_a 0 2 +.d 3 0 + jsr s7 +.o 0 1 b + fillB_b 0 0 + pop_b 1 +.d 1 0 + rtn +.desc d8 _hnf l8 4 0 "gEq_PAIR;10" +.a 0 a8 +.o 2 0 +l8 + repl_args 3 3 +.o 4 0 +a8 +.d 4 0 + jsr ea8 +.o 0 1 b + buildB_b 0 + pop_b 1 +.d 1 0 + rtn +.o 4 0 +ea8 + jsr_eval 3 + jsr_eval 2 + jsr_eval 0 +.o 4 0 +s8 + push_args 2 2 2 + buildh _Nil 0 + update_a 0 5 + pop_a 1 + push_args 5 2 2 + buildh _Nil 0 + update_a 0 8 + pop_a 1 + push_a 0 + push_a 3 + push_a 6 + update_a 8 10 + update_a 6 9 + update_a 4 8 + update_a 2 7 + update_a 1 6 + updatepop_a 0 5 + jsr_ap 2 + pushB_a 0 + pop_a 1 + jmp_false else.5 + push_a 0 + push_a 3 + jsr_eval 0 + push_a 3 + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 + update_a 2 5 + update_a 1 4 + updatepop_a 0 3 + jsr_ap 2 + pushB_a 0 + pop_a 1 +.d 0 1 b + rtn +else.5 + pop_a 3 + pushB FALSE +.d 0 1 b + rtn +.desc d5 _hnf l5 2 0 "gEq_UNIT;5" +.a 0 a5 +.o 2 0 +l5 + repl_args 1 1 +.o 2 0 +a5 +.o 2 0 +ea5 + pop_a 2 + pushB TRUE + buildB_b 0 + pop_b 1 +.d 1 0 + rtn +.desc d7 _hnf l7 3 0 "gEq_CONS;7" +.a 0 a7 +.o 2 0 +l7 + repl_args 2 2 +.o 3 0 +a7 +.d 3 0 + jsr ea7 +.o 0 1 b + buildB_b 0 + pop_b 1 +.d 1 0 + rtn +.o 3 0 +ea7 + jsr_eval 2 + jsr_eval 1 + jsr_eval 0 +.o 3 0 +s7 + push_args 1 1 1 + buildh _Nil 0 + update_a 0 3 + pop_a 1 + push_args 3 1 1 + buildh _Nil 0 + update_a 0 5 + pop_a 1 + push_a 0 + push_a 2 + push_a 4 + update_a 2 7 + update_a 1 6 + updatepop_a 0 5 + jsr_ap 2 + pushB_a 0 + pop_a 1 +.d 0 1 b + rtn +.desc d9 _hnf l9 4 0 "gEq_EITHER;11" +.a 0 a9 +.o 2 0 +l9 + repl_args 3 3 +.o 4 0 +a9 +.d 4 0 + jsr ea9 +.o 0 1 b + buildB_b 0 + pop_b 1 +.d 1 0 + rtn +.o 4 0 +ea9 + jsr_eval 2 +.o 4 0 +s9 + eq_desc e_StdGeneric_dLEFT 1 2 + jmp_true case.6 + jmp case.7 +case.6 + push_args 2 1 1 + buildh _Nil 0 + update_a 0 4 + pop_a 1 + jsr_eval 4 + eq_desc e_StdGeneric_dLEFT 1 4 + jmp_true case.9 + pop_a 1 + jmp case.8 +case.9 + push_args 4 1 1 + buildh _Nil 0 + update_a 0 6 + pop_a 1 + push_a 0 + push_a 3 + jsr_eval 0 + push_a 3 + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 + update_a 2 8 + update_a 1 7 + updatepop_a 0 6 + jsr_ap 2 + pushB_a 0 + pop_a 1 +.d 0 1 b + rtn +case.7 + push_args 2 1 1 + buildh _Nil 0 + update_a 0 4 + pop_a 1 + jsr_eval 4 + eq_desc e_StdGeneric_dRIGHT 1 4 + jmp_true case.10 + pop_a 1 + jmp case.8 +case.10 + push_args 4 1 1 + buildh _Nil 0 + update_a 0 6 + pop_a 1 + push_a 0 + push_a 4 + jsr_eval 0 + push_a 3 + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 + update_a 2 8 + update_a 1 7 + updatepop_a 0 6 + jsr_ap 2 + pushB_a 0 + pop_a 1 +.d 0 1 b + rtn +case.8 + pop_a 4 + pushB FALSE +.d 0 1 b + rtn +.n 1 _ ea14 +.o 1 0 +n14 + push_node _cycle_in_spine 1 +.o 2 0 +ea14 + jsr_eval 0 +.o 2 0 +s14 + eq_desc _Cons 2 0 + jmp_true case.11 + jmp case.12 +case.11 + repl_args 2 2 + push_a 1 + push_a 1 + buildh e_StdGeneric_dPAIR 2 + buildh e_StdGeneric_dCONS 1 + fillh e_StdGeneric_dLEFT 1 3 + pop_a 2 +.d 1 0 + rtn +case.12 + buildh e_StdGeneric_dUNIT 0 + buildh e_StdGeneric_dCONS 1 + fillh e_StdGeneric_dRIGHT 1 2 + pop_a 1 +.d 1 0 + rtn +.o 3 0 +s6 + push_a 2 + push_a 2 + push_a 2 + update_a 2 5 + update_a 1 4 + updatepop_a 0 3 + jsr_ap 2 + pushB_a 0 + pop_a 1 +.d 0 1 b + rtn diff --git a/lst/Clean System Files/generic_eq.o b/lst/Clean System Files/generic_eq.o new file mode 100644 index 0000000000000000000000000000000000000000..2b5274c908c8a4828ed200ac84386c08c29a6875 GIT binary patch literal 36493 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 S498-T|MHUl^b*|+_f>@$nK&&AgM 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 Wp4P4&IOp^8X~|IkQ2-YhEct(Bw0r^p literal 0 HcmV?d00001 diff --git a/lst/Makefile b/lst/Makefile new file mode 100644 index 0000000..583bda6 --- /dev/null +++ b/lst/Makefile @@ -0,0 +1,12 @@ +CLM?=clm +CLMFLAGS?=-b + +BINARIES:=generic_eq generic_print + +all: $(BINARIES) + +%: %.icl + $(CLM) $(basename $<) $(OUTPUT_OPTION) + +clean: + $(RM) -r $(BINARIES) Clean\ System\ Files diff --git a/lst/example_deep.hs b/lst/example_deep.hs new file mode 100644 index 0000000..d180078 --- /dev/null +++ b/lst/example_deep.hs @@ -0,0 +1,51 @@ +module Deep where + +import Prelude hiding (print) + +--data Value = I Int | B Bool +-- deriving Show +--data Expr +-- = Lit Value +-- | Plus Expr Expr +-- | Eq Expr Expr +-- deriving Show +-- +--type Env = String -> Expr +-- +--initialEnv :: Env +--initialEnv _ = error "Unknown variable" +-- +--addEnv :: String -> Expr -> Env -> Env +--addEnv name expr env v +-- | v == name = expr +-- | otherwise = env v +-- +--eval :: Env -> Expr -> Value +--eval _ (Lit i) = Lit i +--eval env (Plus l r) = case (eval env l, eval env r) of +-- (Lit (I l), Lit (I r)) -> Lit (I (l+r)) +-- (l, r) -> error $ "Cannot add " ++ show l ++ " to " ++ show r +--eval env (Eq l r) = case (eval env l, eval env r) of +-- (Lit (I l), Lit (I r)) -> Lit (B (l==r)) +-- (Lit (B l), Lit (B r)) -> Lit (B (l==r)) +-- (l, r) -> error $ "Cannot compare " ++ show l ++ " to " ++ show r +-- +--print :: Expr -> String +--print (Lit i) = show i +--print (Plus l r) = "(" ++ print l ++ "+" ++ print r ++ ")" +--print (Eq l r) = "(" ++ print l ++ "==" ++ print r ++ ")" + +data Expr a where + Lit :: Show a => a -> Expr a + Plus :: Num a => Expr a -> Expr a -> Expr a + Eq :: Eq a => Expr a -> Expr a -> Expr Bool + +print :: Expr a -> String +print (Lit i) = show i +print (Plus l r) = "(" ++ print l ++ "+" ++ print r ++ ")" +print (Eq l r) = "(" ++ print l ++ "==" ++ print r ++ ")" + +eval :: Expr a -> a +eval (Lit i) = i +eval (Plus l r) = eval l + eval r +eval (Eq l r) = eval l == eval r diff --git a/lst/expr_gadt b/lst/expr_gadt new file mode 100755 index 0000000000000000000000000000000000000000..74ccb955a59792fb3c5ae08792bfd431255bf707 GIT binary patch literal 345712 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

m2?pjq*c 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 literal 0 HcmV?d00001 diff --git a/lst/expr_gadt.hs b/lst/expr_gadt.hs new file mode 100644 index 0000000..475ee86 --- /dev/null +++ b/lst/expr_gadt.hs @@ -0,0 +1,17 @@ +module ExprGADT where +import Prelude hiding (print) + +data Expr a where + Lit :: Show a => a -> Expr a + Add :: Num a => Expr a -> Expr a -> Expr a + Eq :: Eq e => Expr e -> Expr e -> Expr Bool + +eval :: Expr a -> a +eval (Lit e) = e +eval (Add l r) = eval l + eval r +eval (Eq l r) = eval l == eval r + +print :: Expr a -> String +print (Lit e) = show e +print (Add l r) = print l ++ "+" ++ print r +print (Eq l r) = print l ++ "==" ++ print r diff --git a/lst/expr_gadt.icl b/lst/expr_gadt.icl new file mode 100644 index 0000000..69763b0 --- /dev/null +++ b/lst/expr_gadt.icl @@ -0,0 +1,24 @@ +module expr_gadt +import StdEnv + +:: BM a b = { ab :: a -> b, ba :: b -> a } +bm :: BM a a +bm = {ab=id, ba=id, tab=id, tba=id} + +:: Expr a + = E.e: Lit (BM a e) e & toString e + | E.e: Add (BM a e) (Expr e) (Expr e) & + e + | E.e: Eq (BM a Bool) (Expr e) (Expr e) & == e +lit e = Lit bm e +add l r = Add bm l r +eq l r = Eq bm l r + +eval :: (Expr a) -> a +eval (Lit bm e) = bm.ba e +eval (Add bm l r) = bm.ba (eval l + eval r) +eval (Eq bm l r) = bm.ba (eval l == eval r) + +print :: (Expr a) -> String +print (Lit _ e) = toString e +print (Add _ l r) = print l +++ "+" +++ print r +print (Eq _ l r) = print l +++ "==" +++ print r diff --git a/lst/generic_eq b/lst/generic_eq new file mode 100755 index 0000000000000000000000000000000000000000..c6b0b1d947262a3d0c7dc65e04052cd981f33e25 GIT binary patch literal 357960 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 Bool + +gEq{|Int|} x y = x == y +gEq{|Bool|} x y = x == y +gEq{|Real|} x y = x == y +gEq{|Char|} x y = x == y +gEq{|UNIT|} x y = True +gEq{|OBJECT|} f (OBJECT x) (OBJECT y) = f x y +gEq{|CONS|} f (CONS x) (CONS y) = f x y +gEq{|RECORD|} f (RECORD x) (RECORD y) = f x y +gEq{|FIELD|} f (FIELD x) (FIELD y) = f x y +gEq{|PAIR|} fl fr (PAIR lx rx) (PAIR ly ry) = fl lx ly && fr rx ry +gEq{|EITHER|} fl _ (LEFT x) (LEFT y) = fl x y +gEq{|EITHER|} _ fr (RIGHT x) (RIGHT y) = fr x y +gEq{|EITHER|} _ _ _ _ = False + +:: T = C1 Int ([Char], ?Bool) | C2 +derive gEq [], T, (,), ? + +Start = (gEq{|*|} C2 (C1 42 ([], ?Just True)), gEq{|*->*|} (<) [1,2,3] [2,3,4]) +// (False, True) diff --git a/lst/generic_print b/lst/generic_print new file mode 100755 index 0000000000000000000000000000000000000000..9f21abd0808bf66be225b13f39d0b99c92ce83a0 GIT binary patch literal 362680 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 z%0D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 Ol#>55@1T<99{N954%{RF literal 0 HcmV?d00001 diff --git a/lst/generic_print.icl b/lst/generic_print.icl new file mode 100644 index 0000000..36e3e58 --- /dev/null +++ b/lst/generic_print.icl @@ -0,0 +1,23 @@ +module generic_print +import StdEnv, StdGeneric + +generic gPrint a :: a [String] -> [String] + +gPrint{|Int|} x acc = [toString x:acc] +gPrint{|Bool|} x acc = [toString x:acc] +gPrint{|Real|} x acc = [toString x:acc] +gPrint{|Char|} x acc = [toString x:acc] +gPrint{|UNIT|} x acc = acc +gPrint{|OBJECT|} f (OBJECT x) acc = f x acc +gPrint{|CONS of gcd|} f (CONS x) acc = ["(",gcd.gcd_name, " ":f x [")":acc]] +gPrint{|RECORD of grd|} f (RECORD x) acc = ["{":f x ["}":acc]] +gPrint{|FIELD of gfd|} f (FIELD x) acc = [gfd.gfd_name, "=":f x acc] +gPrint{|PAIR|} fl fr (PAIR l r) acc = fl l [" ":fr r acc] +gPrint{|EITHER|} fl _ (LEFT x) acc = fl x acc +gPrint{|EITHER|} _ fr (RIGHT x) acc = fr x acc + +:: T = {f1 :: Int, f2 :: (Real, [?Int])} +derive gPrint (,), [], ?, T + +Start = gPrint{|*|} {f1=42, f2=(3.14, [?None])} [] +// {f1=42 f2=(_Tuple2 3.14 (_Cons (_!None ) (_Nil )))} diff --git a/motto.tex b/motto.tex index 92d39f6..c2a866b 100644 --- a/motto.tex +++ b/motto.tex @@ -3,6 +3,26 @@ \epigraph{% The world is indeed comic, but the joke is on mankind. }{% - H.P.\ Lovecraft + Howard Philip Lovecraft +} +\epigraph{% + Рукописи не горят\\(Manuscripts don't burn) +}{% + Михаил Афанасьевич Булгаков\\(Mikhail Afanesyevich Bulgakov) +} +\epigraph{% + You start a question, and it's like starting a stone. + You sit quietly on the top of a hill; + and away the stone goes, starting others; + \ldots +}{% + Robert Louis Stevenson +} +\epigraph{% + I never thought, when I used to read books, what work it was to write them\ldots + It's work enough to read them sometimes\ldots + As to the writing, it has its own charms. +}{% + Charles John Huffam Dickens } \vspace*{\fill} diff --git a/preamble.tex b/preamble.tex index f842e92..a8baf2b 100644 --- a/preamble.tex +++ b/preamble.tex @@ -1,3 +1,6 @@ +% Input encoding +\usepackage[utf8]{inputenc} + % Papersize \usepackage{geometry} \geometry{ @@ -12,7 +15,7 @@ } % Font encoding -\usepackage[T1]{fontenc} +\usepackage[T1,T2A]{fontenc} % Less bad boxes \usepackage{microtype} @@ -22,6 +25,7 @@ % Internationalisation \usepackage[british]{babel} +%\babelfont[russian]{rm}{Liberation Serif} % Appendices % TODO is this necessary? @@ -56,23 +60,81 @@ \usepackage[nodayofweek]{datetime} % Code +\usepackage{stmaryrd} % Short arrow \usepackage{listings} % General listings settings \lstset{% + basewidth=0.43em, + basicstyle=\linespread{0.9}\tt\footnotesize, breakatwhitespace=false, breaklines=true, captionpos=b, + columns=[c]fixed, + commentstyle=\sl, + escapeinside={(+}{+)}, % chktex 9 + frame=L, keepspaces=true, - basicstyle=\ttfamily\fontseries{l}\footnotesize, - commentstyle=\slshape\fontseries{m}, - keywordstyle=\bfseries\fontseries{b}, - stringstyle=\ttfamily, + keywordstyle=\bf, + postbreak=\mbox{\textcolor{gray}{$\hookrightarrow$}\space}, showspaces=false, showstringspaces=false, showtabs=false, + stringstyle=\it, tabsize=4, - frame=L, + literate=% + {~}{$\sim$}1 + {\\}{{$\lambda\:$}}1 + {->}{{$\shortrightarrow$}}2 + {<-}{{$\shortleftarrow$}}2 + {=>}{{$\Rightarrow$}}2 + {<=}{{$\Leftarrow$}}2 + {'}{{`}}1 + {...}{{$\cdots$}}1 %chktex 11 + {a0}{{a\textsubscript{0}}}2 + {a1}{{a\textsubscript{1}}}2 + {a2}{{a\textsubscript{2}}}2 +% {an}{{a\textsubscript{n}}}2 + {c0}{{c\textsubscript{0}}}2 + {c1}{{c\textsubscript{1}}}2 + {c2}{{c\textsubscript{2}}}2 + {cn}{{c\textsubscript{n}}}2 + {f0}{{f\textsubscript{0}}}2 + {f1}{{f\textsubscript{1}}}2 + {f2}{{f\textsubscript{2}}}2 + {fn}{{f\textsubscript{n}}}2 + {t0}{{t\textsubscript{0}}}2 + {t1}{{t\textsubscript{1}}}2 + {t2}{{t\textsubscript{2}}}2 + {tn}{{t\textsubscript{n}}}2 + {v0}{{v\textsubscript{0}}}2 + {v1}{{v\textsubscript{1}}}2 + {v2}{{v\textsubscript{2}}}2 + {vn}{{v\textsubscript{n}}}2 + {C0}{{C\textsubscript{0}}}2 + {C1}{{C\textsubscript{1}}}2 + {C2}{{C\textsubscript{2}}}2 + {Cn}{{C\textsubscript{n}}}2 + {R0}{{R\textsubscript{0}}}2 + {R1}{{R\textsubscript{1}}}2 + {R2}{{R\textsubscript{2}}}2 + {Rn}{{R\textsubscript{n}}}2 +} +\lstdefinestyle{haskell}{% + language=Haskell, + deletekeywords={True,False,Bool,Int,Float,Double,zip,length,Show,show,Num,Eq,print,String}, +} +\lstdefinelanguage{Clean}{% + alsoletter={ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_`1234567890}, + alsoletter={~!@\#$\%^\&*-+=?<>:|\\.}, + morekeywords={generic,implementation,definition,dynamic,module,import,from,where,in,of,case,let,infix,infixr,infixl,class,instance,with,if,derive,code,In,qualified,otherwise}, + sensitive=true, + morecomment=[l]{//}, + morecomment=[n]{/*}{*/}, + morestring=[b]", % chktex 18 + morestring=[s]{['}{']}, % chktex 9 } +\newcommand{\cleaninline}[1]{\lstinline[language=Clean,postbreak=]|#1|} +\newcommand{\haskellinline}[1]{\lstinline[language=Haskell,style=haskell,postbreak=]|#1|} % Fix list of listings title \renewcommand{\lstlistlistingname}{List of Listings} % Fix list of listings chapter separator @@ -83,6 +145,19 @@ \my@chapter} \makeatother +\lstnewenvironment{lstClean}[1][] + {% + \lstset{language=Clean, #1} + \renewcommand*{\lstlistingname}{Listing (Clean)} + } + {} +\lstnewenvironment{lstHaskell}[1][] + {% + \lstset{language=Haskell,style=haskell,#1}% + \renewcommand*{\lstlistingname}{Listing (Haskell)} + } + {} + % Glossaries and acronyms \usepackage[acronym,nonumberlist]{glossaries} % Fix gls in hyperlink errors @@ -101,8 +176,10 @@ \def\Acrfullpl#1{}% \def\gls#1{}% \def\glspl#1{}% + \def\glsentrytext#1{}% \def\Gls#1{}% \def\Glspl#1{}% + \def\Glsentrytext#1{}% \def\titlecap#1{}% } @@ -145,6 +222,16 @@ \usepackage{fancyhdr} \pagestyle{fancy} +% Tables spanning pages +\usepackage{longtable} + +% Easy references +\usepackage{cleveref} + +% Diagrams +\usepackage{tikz} +\usetikzlibrary{pie} + % To patch the chapter command \usepackage{etoolbox} % Have better page numbering in chapters @@ -158,3 +245,8 @@ % Initialize the glossaries \makeglossaries% \input{glossaries} + +% Custom commands +\newcommand{\GHCmod}[1]{\texttt{#1}} +\newcommand{\requiresGHCmod}[1]{\footnote{Requires \GHCmod{#1} to be enabled.}} +\newcommand{\etc}{{\fontfamily{cmr}\selectfont{\itshape\/\&c}}} diff --git a/thesis.bib b/thesis.bib index 8127713..7a30ee4 100644 --- a/thesis.bib +++ b/thesis.bib @@ -1,4 +1,3 @@ - @inproceedings{lubbers_multitasking_2019, address = {Opatija, Croatia}, title = {Multitasking on {Microcontrollers} using {Task} {Oriented} {Programming}}, @@ -100,3 +99,293 @@ keywords = {domain specific languages, internet of things, network reliability, software architectures}, file = {Lubbers et al. - 2020 - Tiered versus Tierless IoT Stacks Comparing Smart.pdf:/home/mrl/.local/share/zotero/storage/YY3MJRZ6/Lubbers et al. - 2020 - Tiered versus Tierless IoT Stacks Comparing Smart.pdf:application/pdf} } + +@misc{achten_clean_2007, + title = {Clean for {Haskell98} {Programmers}}, + language = {en}, + author = {Achten, Peter}, + month = jul, + year = {2007}, + file = {Achten - Clean for Haskell98 Programmers.pdf:/home/mrl/.local/share/zotero/storage/69WWSGLF/Achten - Clean for Haskell98 Programmers.pdf:application/pdf}, +} + +@article{groningen_exchanging_2010, + title = {Exchanging sources between {Clean} and {Haskell}: {A} double-edged front end for the {Clean} compiler}, + volume = {45}, + shorttitle = {Exchanging sources between {Clean} and {Haskell}}, + number = {11}, + journal = {ACM Sigplan Notices}, + author = {Groningen, John van and Noort, Thomas van and Achten, Peter and Koopman, Pieter and Plasmeijer, Rinus}, + year = {2010}, + pages = {49--60}, + file = {groj10-Haskell_front_end_Clean.pdf:/home/mrl/.local/share/zotero/storage/WVZWX8WT/groj10-Haskell_front_end_Clean.pdf:application/pdf}, +} + +@techreport{plasmeijer_clean_2021, + address = {Nijmegen}, + title = {Clean {Language} {Report} version 3.1}, + urldate = {2021-12-22}, + institution = {Institute for Computing and Information Sciences}, + author = {Plasmeijer, Rinus and van Eekelen, Marko and van Groningen, John}, + month = dec, + year = {2021}, + pages = {127}, + file = {CleanLanguageReport.pdf:/home/mrl/.local/share/zotero/storage/I2SDRIH6/CleanLanguageReport.pdf:application/pdf}, +} + +@inproceedings{brus_clean_1987, + address = {Berlin, Heidelberg}, + title = {Clean — {A} language for functional graph rewriting}, + isbn = {978-3-540-47879-9}, + abstract = {Clean is an experimental language for specifying functional computations in terms of graph rewriting. It is based on an extension of Term Rewriting Systems (TRS) in which the terms are replaced by graphs. Such a Graph Rewriting System (GRS) consists of a, possibly cyclic, directed graph, called the data graph and graph rewrite rules which specify how this data graph may be rewritten. Clean is designed to provide a firm base for functional programming. In particular, Clean is suitable as an intermediate language between functional languages and (parallel) target machine architectures. A sequential implementation of Clean on a conventional machine is described and its performance is compared with other systems. The results show that Clean can be efficiently implemented.}, + booktitle = {Functional {Programming} {Languages} and {Computer} {Architecture}}, + publisher = {Springer Berlin Heidelberg}, + author = {Brus, T. H. and van Eekelen, M. C. J. D. and van Leer, M. O. and Plasmeijer, M. J.}, + editor = {Kahn, Gilles}, + year = {1987}, + pages = {364--384}, + file = {brut87-Clean.ps.gz:/home/mrl/.local/share/zotero/storage/T2QATWIE/brut87-Clean.ps.gz:application/gzip}, +} + +@inproceedings{barendregt_towards_1987, + title = {Towards an intermediate language for graph rewriting}, + volume = {1}, + booktitle = {{PARLE}, {Parallel} {Architectures} and {Languages} {Europe}}, + publisher = {Springer Verlag}, + author = {Barendregt, HP and van Eekelen, MCJD and Glauert, JRW and Kennaway, JR and Plasmeijer, MJ and Sleep, MR}, + year = {1987}, + pages = {159--174}, + file = {barh87-Lean.ps.gz:/home/mrl/.local/share/zotero/storage/63FBHND7/barh87-Lean.ps.gz:application/gzip}, +} + +@inproceedings{nocker_concurrent_1991, + address = {Berlin, Heidelberg}, + title = {Concurrent clean}, + isbn = {978-3-540-47472-2}, + abstract = {Concurrent Clean is an experimental, lazy, higher-order parallel functional programming language based on term graph rewriting. An important difference with other languages is that in Clean graphs are manipulated and not terms. This can be used by the programmer to control communication and sharing of computation. Cyclic structures can be defined. Concurrent Clean furthermore allows to control the (parallel) order of evaluation to make efficient evaluation possible. With help of sequential annotations the default lazy evaluation can be locally changed into eager evaluation. The language enables the definition of partially strict data structures which make a whole new class of algorithms feasible in a functional language. A powerful and fast strictness analyser is incorporated in the system. The quality of the code generated by the Clean compiler has been greatly improved such that it is one of the best code generators for a lazy functional language. Two very powerful parallel annotations enable the programmer to define concurrent functional programs with arbitrary process topologies. Concurrent Clean is set up in such a way that the efficiency achieved for the sequential case can largely be maintained for a parallel implementation on loosely coupled parallel machine architectures.}, + booktitle = {{PARLE} '91 {Parallel} {Architectures} and {Languages} {Europe}}, + publisher = {Springer Berlin Heidelberg}, + author = {Nöcker, E. G. J. M. H. and Smetsers, J. E. W. and van Eekelen, M. C. J. D. and Plasmeijer, M. J.}, + editor = {Aarts, Emile H. L. and van Leeuwen, Jan and Rem, Martin}, + year = {1991}, + pages = {202--219}, + file = {Nöcker et al. - 1991 - Concurrent clean.pdf:/home/mrl/.local/share/zotero/storage/XHTNR7BR/Nöcker et al. - 1991 - Concurrent clean.pdf:application/pdf}, +} + +@phdthesis{alimarine_generic_2005, + address = {Nijmegen}, + type = {{PhD}}, + title = {Generic {Functional} {Programming}}, + language = {en}, + school = {Radboud University}, + author = {Alimarine, Artem}, + year = {2005}, + file = {Alimarine - Generic Functional Programming.pdf:/home/mrl/.local/share/zotero/storage/PDTS3SGX/Alimarine - Generic Functional Programming.pdf:application/pdf}, +} + +@misc{ghc_team_ghc_2021, + title = {{GHC} {User}’s {Guide} {Documentation}}, + url = {https://downloads.haskell.org/~ghc/latest/docs/users_guide.pdf}, + language = {English}, + urldate = {2021-02-24}, + publisher = {Release}, + author = {GHC Team}, + year = {2021}, +} + +@inproceedings{cheney_lightweight_2002, + title = {A lightweight implementation of generics and dynamics}, + url = {http://dl.acm.org/citation.cfm?id=581698}, + urldate = {2017-05-15}, + booktitle = {Proceedings of the 2002 {ACM} {SIGPLAN} workshop on {Haskell}}, + publisher = {ACM}, + author = {Cheney, James and Hinze, Ralf}, + year = {2002}, + keywords = {dynamic typing, generic programming, type representations}, + pages = {90--104}, + file = {Cheney and Hinze - 2002 - A lightweight implementation of generics and dynam.pdf:/home/mrl/.local/share/zotero/storage/FZ6EGJRJ/Cheney and Hinze - 2002 - A lightweight implementation of generics and dynam.pdf:application/pdf;HW02.pdf:/home/mrl/.local/share/zotero/storage/A8Z49NK6/HW02.pdf:application/pdf}, +} + +@incollection{hinze_fun_2003, + address = {Palgrave}, + series = {Cornerstones of {Computing}}, + title = {Fun {With} {Phantom} {Types}}, + isbn = {978-0-333-99285-2}, + booktitle = {The {Fun} of {Programming}}, + publisher = {Bloomsbury Publishing}, + author = {Hinze, Ralf}, + editor = {Gibbons, Jeremy and de Moor, Oege}, + year = {2003}, + pages = {245--262}, +} + +@inproceedings{jeuring_polytypic_1996, + address = {Berlin, Heidelberg}, + title = {Polytypic programming}, + isbn = {978-3-540-70639-7}, + abstract = {Many functions have to be written over and over again for different datatypes, either because datatypes change during the development of programs, or because functions with similar functionality are needed on different datatypes. Examples of such functions are pretty printers, debuggers, equality functions, unifiers, pattern matchers, rewriting functions, etc. Such functions are called polytypic functions. A polytypic function is a function that is defined by induction on the structure of user-defined datatypes. This paper introduces polytypic functions, and shows how to construct and reason about polytypic functions. A larger example is studied in detail: polytypic functions for term rewriting and for determining whether a collection of rewrite rules is normalising.}, + booktitle = {Advanced {Functional} {Programming}}, + publisher = {Springer Berlin Heidelberg}, + author = {Jeuring, Johan and Jansson, Patrik}, + editor = {Launchbury, John and Meijer, Erik and Sheard, Tim}, + year = {1996}, + pages = {68--114}, + file = {Jeuring and Jansson - 1996 - Polytypic programming.pdf:/home/mrl/.local/share/zotero/storage/SLC4G2IT/Jeuring and Jansson - 1996 - Polytypic programming.pdf:application/pdf}, +} +@techreport{cheney_first-class_2003, + title = {First-class phantom types}, + url = {https://ecommons.cornell.edu/handle/1813/5614}, + urldate = {2017-05-15}, + institution = {Cornell University}, + author = {Cheney, James and Hinze, Ralf}, + year = {2003}, + file = {https\://ecommons.cornell.edu/bitstream/handle/1813/5614/?sequence=1:/home/mrl/.local/share/zotero/storage/R5IFMHTP/5614.pdf:application/pdf} +} +@incollection{mernik_extensible_2013, + address = {Hershey, PA, USA}, + title = {Extensible {Languages}: {Blurring} the {Distinction} between {DSL} and {GPL}}, + isbn = {978-1-4666-2092-6}, + url = {https://services.igi-global.com/resolvedoi/resolve.aspx?doi=10.4018/978-1-4666-2092-6.ch001}, + abstract = {Out of a concern for focus and concision, domain-specific languages (DSLs) are usually very different from general purpose programming languages (GPLs), both at the syntactic and the semantic levels. One approach to DSL implementation is to write a full language infrastructure, including parser, interpreter, or even compiler. Another approach however, is to ground the DSL into an extensible GPL, giving you control over its own syntax and semantics. The DSL may then be designed merely as an extension to the original GPL, and its implementation may boil down to expressing only the differences with it. The task of DSL implementation is hence considerably eased. The purpose of this chapter is to provide a tour of the features that make a GPL extensible, and to demonstrate how, in this context, the distinction between DSL and GPL can blur, sometimes to the point of complete disappearance.}, + booktitle = {Formal and {Practical} {Aspects} of {Domain}-{Specific} {Languages}: {Recent} {Developments}}, + publisher = {IGI Global}, + author = {Verna, Didier}, + editor = {Mernik, Marjan}, + year = {2013}, + doi = {10.4018/978-1-4666-2092-6.ch001}, + pages = {1--31}, +} + +@article{tratt_domain_2008, + title = {Domain {Specific} {Language} {Implementation} via {Compile}-{Time} {Meta}-{Programming}}, + volume = {30}, + issn = {0164-0925}, + url = {https://doi.org/10.1145/1391956.1391958}, + doi = {10.1145/1391956.1391958}, + abstract = {Domain specific languages (DSLs) are mini-languages that are increasingly seen as being a valuable tool for software developers and non-developers alike. DSLs must currently be created in an ad-hoc fashion, often leading to high development costs and implementations of variable quality. In this article, I show how expressive DSLs can be hygienically embedded in the Converge programming language using its compile-time meta-programming facility, the concept of DSL blocks, and specialised error reporting techniques. By making use of pre-existing facilities, and following a simple methodology, DSL implementation costs can be significantly reduced whilst leading to higher quality DSL implementations.}, + number = {6}, + journal = {ACM Trans. Program. Lang. Syst.}, + author = {Tratt, Laurence}, + month = oct, + year = {2008}, + note = {Place: New York, NY, USA +Publisher: Association for Computing Machinery}, + keywords = {compile-time meta-programming, domain specific languages, Syntax extension}, + file = {Tratt - 2008 - Domain Specific Language Implementation via Compil.pdf:/home/mrl/.local/share/zotero/storage/HHGYJK4H/Tratt - 2008 - Domain Specific Language Implementation via Compil.pdf:application/pdf}, +} + +@inproceedings{sheard_accomplishments_2001, + address = {Berlin, Heidelberg}, + title = {Accomplishments and {Research} {Challenges} in {Meta}-programming}, + isbn = {978-3-540-44806-8}, + abstract = {In the last ten years the study of meta-programming systems, as formal systems worthy of study in their own right, has vastly accelerated. In that time a lot has been accomplished, yet much remains to be done. In this invited talk I wish to review recent accomplishments and future research challenges in hopes that this will spur interest in meta-programming in general and lead to new and better meta-programming systems.}, + booktitle = {Semantics, {Applications}, and {Implementation} of {Program} {Generation}}, + publisher = {Springer Berlin Heidelberg}, + author = {Sheard, Tim}, + editor = {Taha, Walid}, + year = {2001}, + pages = {2--44}, + file = {Sheard - 2001 - Accomplishments and Research Challenges in Meta-pr.pdf:/home/mrl/.local/share/zotero/storage/M7NT6USA/Sheard - 2001 - Accomplishments and Research Challenges in Meta-pr.pdf:application/pdf}, +} + +@incollection{gibbons_functional_2015, + address = {Cham}, + title = {Functional {Programming} for {Domain}-{Specific} {Languages}}, + isbn = {978-3-319-15940-9}, + url = {https://doi.org/10.1007/978-3-319-15940-9_1}, + abstract = {Domain-specific languages are a popular application area for functional programming; and conversely, functional programming is a popular implementation vehicle for domain-specific languages—at least, for embedded ones. Why is this? The appeal of embedded domain-specific languages is greatly enhanced by the presence of convenient lightweight tools for defining, implementing, and optimising new languages; such tools represent one of functional programming's strengths. In these lectures we discuss functional programming techniques for embedded domain-specific languages; we focus especially on algebraic datatypes and higher-order functions, and their influence on deep and shallow embeddings.}, + booktitle = {Central {European} {Functional} {Programming} {School}: 5th {Summer} {School}, {CEFP} 2013, {Cluj}-{Napoca}, {Romania}, {July} 8-20, 2013, {Revised} {Selected} {Papers}}, + publisher = {Springer International Publishing}, + author = {Gibbons, Jeremy}, + editor = {Zsók, Viktória and Horváth, Zoltán and Csató, Lehel}, + year = {2015}, + doi = {10.1007/978-3-319-15940-9_1}, + pages = {1--28}, + file = {Gibbons - 2015 - Functional Programming for Domain-Specific Languag.pdf:/home/mrl/.local/share/zotero/storage/ARUBLFU6/Gibbons - 2015 - Functional Programming for Domain-Specific Languag.pdf:application/pdf}, +} + +@article{elliott_compiling_2003, + title = {Compiling embedded languages}, + volume = {13}, + doi = {10.1017/S0956796802004574}, + number = {3}, + journal = {Journal of Functional Programming}, + author = {Elliott, Conal and Finne, Sigbjørn and de Moor, Oege}, + year = {2003}, + note = {Publisher: Cambridge University Press}, + pages = {455--481}, + file = {Elliott et al. - 2003 - Compiling embedded languages.pdf:/home/mrl/.local/share/zotero/storage/3X4Z6AKB/Elliott et al. - 2003 - Compiling embedded languages.pdf:application/pdf}, +} + +@book{fowler_domain-specific_2010, + title = {Domain-specific languages}, + publisher = {Pearson Education}, + author = {Fowler, Martin}, + year = {2010}, + file = {Fowler - 2010 - Domain-specific languages.pdf:/home/mrl/.local/share/zotero/storage/YYMYXTZ5/Fowler - 2010 - Domain-specific languages.pdf:application/pdf}, +} + +@inproceedings{hudak_modular_1998, + title = {Modular domain specific languages and tools}, + doi = {10.1109/ICSR.1998.685738}, + booktitle = {Proceedings. {Fifth} {International} {Conference} on {Software} {Reuse} ({Cat}. {No}.{98TB100203})}, + author = {Hudak, P.}, + year = {1998}, + pages = {134--142}, + file = {Hudak - 1998 - Modular domain specific languages and tools.pdf:/home/mrl/.local/share/zotero/storage/JX7KZ2ST/Hudak - 1998 - Modular domain specific languages and tools.pdf:application/pdf}, +} + +@inproceedings{baccelli_reprogramming_2018, + title = {Reprogramming {Low}-end {IoT} {Devices} from the {Cloud}}, + booktitle = {2018 3rd {Cloudification} of the {Internet} of {Things} ({CIoT})}, + publisher = {IEEE}, + author = {Baccelli, Emmanuel and Doerr, Joerg and Jallouli, Ons and Kikuchi, Shinji and Morgenstern, Andreas and Padilla, Francisco Acosta and Schleiser, Kaspar and Thomas, Ian}, + year = {2018}, + pages = {1--6}, + file = {Baccelli et al. - 2018 - Reprogramming Low-end IoT Devices from the Cloud.pdf:/home/mrl/.local/share/zotero/storage/M6LX5ZJN/Baccelli et al. - 2018 - Reprogramming Low-end IoT Devices from the Cloud.pdf:application/pdf}, +} + +@inproceedings{baccelli_scripting_2018, + title = {Scripting {Over}-{The}-{Air}: {Towards} {Containers} on {Low}-end {Devices} in the {Internet} of {Things}}, + booktitle = {{IEEE} {PerCom} 2018}, + author = {Baccelli, Emmanuel and Doerr, Joerg and Kikuchi, Shinji and Padilla, Francisco and Schleiser, Kaspar and Thomas, Ian}, + year = {2018}, + file = {Baccelli et al. - Scripting Over-The-Air Towards Containers on Low-.pdf:/home/mrl/.local/share/zotero/storage/98UTMFAC/Baccelli et al. - Scripting Over-The-Air Towards Containers on Low-.pdf:application/pdf}, +} + +@inproceedings{plasmeijer_task-oriented_2012, + address = {New York, NY, USA}, + series = {{PPDP} '12}, + title = {Task-{Oriented} {Programming} in a {Pure} {Functional} {Language}}, + isbn = {978-1-4503-1522-7}, + url = {https://doi.org/10.1145/2370776.2370801}, + doi = {10.1145/2370776.2370801}, + abstract = {Task-Oriented Programming (TOP) is a novel programming paradigm for the construction of distributed systems where users work together on the internet. When multiple users collaborate, they need to interact with each other frequently. TOP supports the definition of tasks that react to the progress made by others. With TOP, complex multi-user interactions can be programmed in a declarative style just by defining the tasks that have to be accomplished, thus eliminating the need to worry about the implementation detail that commonly frustrates the development of applications for this domain. TOP builds on four core concepts: tasks that represent computations or work to do which have an observable value that may change over time, data sharing enabling tasks to observe each other while the work is in progress, generic type driven generation of user interaction, and special combinators for sequential and parallel task composition. The semantics of these core concepts is defined in this paper. As an example we present the iTask3 framework, which embeds TOP in the functional programming language Clean.}, + booktitle = {Proceedings of the 14th {Symposium} on {Principles} and {Practice} of {Declarative} {Programming}}, + publisher = {Association for Computing Machinery}, + author = {Plasmeijer, Rinus and Lijnse, Bas and Michels, Steffen and Achten, Peter and Koopman, Pieter}, + year = {2012}, + note = {event-place: Leuven, Belgium}, + keywords = {clean, task-oriented programming}, + pages = {195--206}, + file = {103802.pdf:/home/mrl/.local/share/zotero/storage/ZE6A65AW/103802.pdf:application/pdf}, +} + +@incollection{wang_maintaining_2018, + address = {Cham}, + title = {Maintaining {Separation} of {Concerns} {Through} {Task} {Oriented} {Software} {Development}}, + volume = {10788}, + isbn = {978-3-319-89718-9 978-3-319-89719-6}, + url = {http://link.springer.com/10.1007/978-3-319-89719-6_2}, + abstract = {Task Oriented Programming is a programming paradigm that enhances ‘classic’ functional programming with means to express the coordination of work among people and computer systems, the distribution and control of data sources, and the human-machine interfaces. To make the creation process of such applications feasible, it is important to have separation of concerns. In this paper we demonstrate how this is achieved within the Task Oriented Software Development process and illustrate the approach by means of a case study.}, + language = {en}, + urldate = {2019-01-14}, + booktitle = {Trends in {Functional} {Programming}}, + publisher = {Springer International Publishing}, + author = {Stutterheim, Jurriën and Achten, Peter and Plasmeijer, Rinus}, + editor = {Wang, Meng and Owens, Scott}, + year = {2018}, + doi = {10.1007/978-3-319-89719-6}, + pages = {19--38}, + file = {Stutterheim et al. - 2018 - Maintaining Separation of Concerns Through Task Or.pdf:/home/mrl/.local/share/zotero/storage/4GXJEM2U/Stutterheim et al. - 2018 - Maintaining Separation of Concerns Through Task Or.pdf:application/pdf}, +} diff --git a/thesis.tex b/thesis.tex index b87b856..e94ba89 100644 --- a/thesis.tex +++ b/thesis.tex @@ -1,9 +1,9 @@ \documentclass[twoside,10pt]{book} - \def\mytitle{Big Things for Tiny Computers} -\def\mysubtitle{Task Oriented Programming for the Internet of Things} +\def\mysubtitle{Task-Oriented Programming for the Internet of Things} \def\myauthor{Mart Lubbers} +\def\mydate{\formatdate{1}{6}{2023}} \input{preamble} @@ -19,14 +19,13 @@ backgroundcolor=white, linecolor=black, size=scriptsize, - inline, } % Document info \title{\mytitle{} --- \mysubtitle{}} \author{Mart Lubbers} -\date{\formatdate{1}{6}{2023}} +\date{\mydate} \begin{document} \frontmatter% @@ -54,6 +53,7 @@ % The actual document \mainmatter% \addthumb{Chapters}{\arabic{chapter}}{white}{gray} +\setcounter{chapter}{-1} \chapter{Introduction}% \label{chp:introduction} @@ -76,9 +76,9 @@ \label{chp:appendix} \addthumb{Appendices}{\Alph{chapter}}{white}{gray} -\chapter{An Appendix}% -\label{chp:an_appendix} -\input{an_appendix} +\chapter{\glsentrytext{CLEAN} for \glsentrytext{HASKELL} Programmers}% +\label{chp:clean_for_haskell_programmers} +\input{appendix/clean_for_haskell_programmers.tex} \backmatter% \addtitlethumb{Backmatter}{}{white}{gray}{pagesLTS.0} @@ -87,7 +87,7 @@ \phantomsection{}% \label{chp:bibliography} \addcontentsline{toc}{chapter}{Bibliography} -\bibliographystyle{plain} +\bibliographystyle{alpha} \bibliography{thesis} % Abstract diff --git a/titlepage.tex b/titlepage.tex index 23b9eca..0aa713f 100644 --- a/titlepage.tex +++ b/titlepage.tex @@ -58,6 +58,7 @@ \item[] Copromotor: \begin{itemize} \item[] dr.\ P.W.M.\ Koopman + \item[] dr.\ J.M.\ Jansen \end{itemize} \end{itemize} @@ -73,7 +74,7 @@ \vfill \noindent% -\begin{minipage}[b][][b]{0.8\textwidth}% adapt widths of minipages to your needs +\begin{minipage}[b][][b]{0.8\textwidth} % adapt widths of minipages to your needs { \setlength{\parindent}{0cm}% This research was funded by the Royal Netherlands Navy. -- 2.20.1