\begin{itemizep}
\item \ifger{vergesst was Ihr über imperative, prozedurale oder OOP basierte Sprachen wisst... am besten vergesst alles, was Ihr über Programmiersprachen wisst}{forget about imperative, procedural, OOP; forget about any programming language}
\item \ifger{denkt in Typen!}{think in types!}
\begin{itemizep}
\item \ifger{keine Angst vor Typfehlern!}{don't be afraid of type errors}
\item \ifger{lass den type-checker die ganze Arbeit tun (macht diese Funktion auch das, was ich denke?)}{let the type-checker do the work for you (does this function do what I think it does?)}
\item \ifger{Funktionen nur durch das Lesen ihrer Typsignatur verstehen?}{understand functions just by looking at their type signature?}
\end{itemizep}
\item \ifger{abstrakt denken!}{think abstract!}
\begin{itemizep}
\item don't repeat yourself!
\item ''develop a solution space, rather than an individual solution'' -- Ralf Hinze
\item ''imagine a graph, rather than a single path'' -- Ralf Hinze
\item ''first solve a more general problem, then extract the interesting bits and pieces by transforming the general program into more specialised ones'' -- Ralf Hinze
\end{itemizep}
\item \ifger{löse atomare Teile eines größeren Problems und kombiniere die Einzellösungen zu größeren Lösungen zusammen}{solve atomic parts of general problems and combine them into greater solutions}
\item \ifger{keine Angst vor Rekursion!}{don't be afraid of recursion!}
\item \ifger{weniger schreiben, mehr denken!}{write less, think more!}
\end{itemizep}