Recursive procedures are useful for examining and manipulating lists since lists are recursively defined data structures. Procedures that operate on lists typically have a base case of an empty list and make recursive calls on the rest of the list. Common procedures that examine lists include those that compute the length, sum, or product of the elements in a list. These procedures have a base case for the empty list and recursively apply the procedure to the rest of the list in the recursive case.