Algebraic Data Types
In the previous chapter, we learned how to write our own functions and combine them to create more complex functionality. Of equal importance is the ability to define our own data types and use them as arguments and results in functions.
This is a lengthy chapter, densely packed with information. While much of this content may be familiar if you have prior experience with functional programming, if you are new to functional programming it is advisable to follow along slowly, taking time to play around with the examples, maybe even coming up with some examples of your own. Make sure to complete as many of the exercises as you need to in order to develop a working understanding of the concepts, if these concepts are new to you, this will likely mean all of them.