This list has been captured by checking the list of figures that follows the table of contents, then identifying all the figures that give design recipes.

Figure 4, page 21: The design recipe at a glance

Figure 6, page 44: Designing the body of a conditional function (refines Figure 4)

Figure 12, page 71: Designing a function for compound data (refines Figure 4)

Figure 18, page 89: Designing a function for mixed data (refines Figure 4 and 12)

Figure 26, page 132: Designing a function for self-referential data (refines Figure 4, 12, and 18)

Figure 43, page 218: Designing groups of functions for groups of data definitions (refines Figures 4, 12, and 18)

Pragmatics box, page 355: Use `lambda`

when a function is not recursive and is only needed once in an argument position (mini-recipe)

Figure 69, page 372: Designing algorithms (mini-recipe)

Not in the first edition: Design recipe for *generative* recursion, and also

- What is (are) the trivial case(s)?
- How do we solve the trivial case(s)?
- For the non-trivial case(s), how many subproblems do we use?
- How do we generate these subproblems?
- Do we combine the results of these subproblems?
How do we combine the results of these subproblems?

Use the answers with a very general template:

`(define (f args ...) (cond [(trivial? args ...) (solve-trivial args ...)] [else (combine (f (generate-subproblem1 args ...) ...) ... (f (generate-subproblemn args ...) ...))]))`

Section 31.1, pages 451: Recognizing the need for an accumulator

Figure 100, page 514 The design recipe for state variables