Much of the power and conciseness of modern functional programming stems from expressive datatype definitions in combination with pattern matching to operate on these datatypes. A new chapter in our tutorial Learning Haskell explains Haskell's datatype definitions in great detail. And this is only the first part; we will release a second chapter on datatypes in the near future. The current chapter, among other things, explores all the intricacies of Haskell's record syntax. Unless you are a Haskell expert, I am quite certain that you will learn something new in these chapters.

To keep the example code interesting, we extend the simple line graphics that we introduced in Spirals, Snowflakes & Trees: Recursion in Pictures to a more flexible graphics interface that supports paths, polygons, circles, and ellipses. In the exercises, we use this interface to generate a new flavour of fractal trees, such as the one displayed below.