\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}