- \item forget about imperative, procedural, OOP; forget about any programming language
- \item think in types!
- \item don't be afraid of type errors
- \item let the type-checker do the work for you (does this function do what I think it does?)
- \item understand functions just by looking at their type signature?
- \item think abstract!
- \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
- \item solve atomic parts of general problems and combine them into greater solutions
- \item don't be afraid of recursion!
- \item write less, think more!