781c4643789dc02c80786c7050c4de99802bfc5a
[cc1516.git] / deliverables / report / eval.tex
1 \section{Evaluation}
2 All in all we are quite happy with \SPLC. Our added syntactic sugar and the
3 higher order functions make our implementation of \SPL{} quite comfortable to
4 program in. Due to the UNIX style interface it is quite easy to combine
5 usage of the compiler with \SSM.
6
7 There are however of course a lot of things to can be improved. We discuss a few
8 of the most interesting and most pressing issues. First of all error handling
9 in \SPLC{} can be greatly improved. Currently a lot of error happen at position
10 (0,0), most notably all type errors happen at this position. It would be a
11 great improvement in usability if errors would always be reported at the
12 correct position. A second issue is that in \SPLC{} it is not possible to
13 spread a program over multiple modules, when developing larger programs this
14 would be an absolute requirement. Thirdly \SPLC{} currently does not allow for
15 multiple recursion, and all functions need to be declared before they are
16 called. It would be nice to have multiple recursion and to not be forced to
17 structure your program in the order in which functions are called.
18
19 \subsection{Work division}
20 \begin{description}
21 \item [Lexing \& parsing]:
22 \begin{description}
23 \item [\Yard] Pim
24 \item [Lexing] Mart \& Pim
25 \item [Parsing] Mostly Mart, some Pim
26 \item [Sugar] literal string: Mart, literal lists: Pim, Variable
27 arguments printing: Mart, Let-expansion: Pim, Lambdas: Pim
28 \end{description}
29 \item [Semantical analysis]:
30 \begin{description}
31 \item [Sanity checks] Mart
32 \item [Type inference] Mostly Pim, some Mart
33 \item [Lambda lifting] Pim
34 \end{description}
35 \item [Code generation]:
36 \begin{description}
37 \item [RWST monad] Mart
38 \item [Basic Generation] Mart \& Pim
39 \item [Higher order functions] Mart
40 \end{description}
41 \end{description}