This document discusses representing information of arbitrary size recursively by defining data in terms of itself. It uses the example of defining pizzas, which can be either a plain crust or another pizza with a topping added. Functions for pizzas are defined recursively to decompose their structure. For instance, counting toppings on a pizza recursively decomposes it and adds one to the count of toppings on its base. Recursive data definitions lead to recursive templates and code.