Conclusion
We learned a lot about recursion, totality checking, and folds in this chapter, all of which are important concepts in pure functional programming in general. Wrapping one's head around recursion takes time and experience. Therefore - as usual - try to solve as many exercises as you can.
In the next chapter, we are taking the concept of iterating over container types one step further and look at effectful data traversals.