The latest chapter in our tutorial Learning Haskell is diving head first into a topic that is at the core of functional programming: higher-order functions and combinator-based programming. This is arguably an area where the beauty of Haskell's language design shines — for example, why have a language where all functions are curried?

We also continue the graphics theme by generalising the fractal tree functions of the previous chapter with higher-order functions. This leads to more variety without the need to change the code of the rendering function.