\section{Extensions}
\subsection{Higher order functions}

\subsection{Syntactic sugars}
Several small syntactic sugars have been added on several levels of processing
to make writing programs more easy.

\subsubsection{Literal strings}
While there are no literal strings one can print lists of characters. Entering
lists of characters can be cumbersome and therefore a shorthand notation is
added to define literal strings using double quotes. During the lexing phase
the string is lexed as a single token and during parsing the token is
transformed to a equal character list representation. The following example
shows the syntax before transformation and the syntax after. Note that just as
in characters, literal strings can contain escape characters.

\begin{SPLCode}
//Before transformation
var a = "Hello world!";
//After transformation
var a = 'H':'e':'l':'l':'o':' ':'w':'o':'r':'l':'d':'!':[]
\end{SPLCode}

\subsubsection{Anonymous functions}
%TODO

\subsubsection{Variable arguments printing}
To ease the programmer we have included a parse-level transformation that
transforms \SI{print} with multiple arguments to multiple \SI{print} function
calls with a single argument. The following example shows the syntax before the
transformation and the syntax after the transformation.

\begin{SPLCode}
//Before transformation
print("abc", 42, 'c', "da\n");

//After transformation
print('a':'b':'c':[]);
print(42);
print('c');
print('d':'a':'\n':[]);
\end{SPLCode}
