Is there a place to submit corrections/suggestions? It's possible this is addressed later in the book, but the maxPitch function on page 53 return (C,0) if all the pitches in the list are lower than (C,0). A better approach might be to make maxPitch :: [Pitch] -> Maybe Pitch and define maxPitch [] = Nothing.

Edit: Nevermind, it's addressed a bit later when talking about different types of folds.