## Catamorphisms in 15 Minutes!

Let’s say you have a list of numbers. What can you do with it? Find its length, map a function over it, add them up, etc. Wouldn’t it be great if there were *one function to rule them all*, a function that generalizes what you can do with a list? In many languages, there is a higher-order function called `fold`

that encapsulates a pattern of **structural recursion** over recursive structures: to specify a function on a list, you specify two exhaustive cases: what to do to an empty list, and what to do with any other list. A generalization of *this* generalization is the notion of a catamorphism, which is what I’m writing about today.